Linux运维学习笔记-通配符及正则表达式知识总结
通配符:
* |
代表所有 |
|
? |
任意一个字符 |
|
; |
两个命令的分隔符 |
|
# |
注释 |
|
| |
管道,将|前命令的执行结果作为|后命令的输入 |
|
~ |
用户的家目录 |
|
- |
上一次的目录 |
|
$ |
变量前面需要加的符号 |
echo $LANG |
/ |
路径分隔符 |
|
> |
重定向(覆盖) |
|
>> |
追加重定向 |
|
< |
输入重定向 |
xargs、tr |
<< |
追加输入重定向 |
cat |
'' |
单引号,不具有变量置换功能,输出时所见即所得 |
echo 'date' |
"" |
具有变量置换功能,解析变量后输出,不加引号相当裕双引号 |
echo "`date`" |
`` |
反引号,两个`` 中间为命令,会先执行,等价$() |
echo "$(date)" |
{} |
中间为命令区块组合或内容序列 |
|
! |
逻辑运算中的"非"(not) |
|
&& |
and 并且,当前一个指令执行成功时,执行后一个指令 |
|
|| |
or 或者,当前一个指令执行失败时,执行后一个指令 |
|
.. |
上一级目录 |
|
. |
当前目录 |
正则表达式:为处理大量字符串而定义的一套规则和方法。
常用于(grep\awk\sed)
注意事项:
1、linux正则表达式一般以行为单位进行处理的。
2、alias grep='grep –color=auto'让匹配的内容显示颜色。
3、注意字符集,export LC_ALL=C
例子:
cat >>oldboy.log<<GONGLI
I am oldboy teacher!
I teach Linux.
I like badminton ball,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448
not 4900000448.
mygod,i am not oldboy,but OLDBOY!
GONGLI
示例:
grep -n显示行号,-v排除,-o只显示匹配到的内容,默认匹配行
过滤出以m开头
[root@ctc oldboy]# grep "^m" oldboy.log
my blog is http://oldboy.blog.51cto.com
my qq num is 49000448
mygod,i am not oldboy,but OLDBOY!
过滤出以m结尾
[root@ctc oldboy]# grep "m$" oldboy.log
my blog is http://oldboy.blog.51cto.com
过滤出空行
[root@ctc oldboy]# grep -n "^$" oldboy.log
3:
8:
[root@ctc oldboy]#
过滤掉除空行外的所有
[root@ctc oldboy]# grep -nv "^$" oldboy.log
1:I am oldboy teacher!
2:I teach Linux.
4:I like badminton ball,billiard ball and chinese chess!
5:my blog is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq num is 49000448
9:not 4900000448.
10:mygod,i am not oldboy,but OLDBOY!
只过滤除指定字符
[root@ctc oldboy]# grep -o "qq" oldboy.log
示例:
示例:
grep:
元字符:
\b 单词边界
\n 换行
Sed:
stream editor Linux三剑客老二,流编辑器,实现对文件的增删改替换查。
参数:-n 取消默认输出,-i 修改文件内容,-e 允许多项编辑
功能:
p打印。
s与g联合使用时,表示对当前行全局匹配替换。
s常说的查找并替换,用一个字符串替换成另一个。
例子:sed -i s#oldboy#oldgirl#g a.txt
#是分隔符,可以用/@等替换
Awk:
awk 过滤、输出内容,一门语言。NR 行号。
$1 第一列,$2 第二列依次类推,但$0表示一行,NF表示最后结尾一列。
NR表行数
-F 指定分隔符。
命令的语法始终是:awk '{pattern + action}' 或者 awk 'pattern {action}'。
例子:awk -F % 'NR>=7,NR<=15 {print $1 $3 $7}' myfile