grep/egrep工具的使用
- 命令格式:grep [-cinvABC] ‘word’ filename
- 常用选项
- -c:表示打印符合要求的行数
- -i:表示忽略大小写
- -n:表示输出符合要求的行及其行号
- -v:表示打印不符合要求的行
- -A:后面跟一个数字(有无空格都可),例:-A2表示打印符合要求的行以及下面两行
- -B:后面跟一个数字,例:-B2表示打印符合要求的行以及上面两行
- -C:后面跟一个数字,例:-C2表示打印符合要求的行以及上下各两行
- -A、-B、-C的用法:
- -A2:
- -B2:
- -C2:
- 过滤出带有某个关键词的行,并输出行号:
- 过滤出不带有某个关键词的行,并输出行号:
- 过滤出所有包含数字的行:
- 过滤出所有不包含数字的行:
正则表达式中,^表示行的开始,$表示行的结尾,^$表示空行
- 打印出不以英文开头的行:
- 当方括号[]遇到类似[15]的形式时。表示只含有1或者5
- 如果要过滤数字以及大小写字母,则写成[0-9a-zA-Z]的形式
- [^字符]表示除[]内字符之外的字符 ^写到方括号里面和外面有区别的
- 过滤出任意一个字符和重复字符:
‘.’表示任意一个字符。 r.o表示把r与o之间有一个任意字符的行过滤出来
*表示零个或多个*前面的字符。 ooo*表示oo、ooo、oooo..或更多的o
.*表示零个或多个任意字符,空行也包含在内。 ooo*表示oo、ooo、oooo..或更多的o
- 指定要过滤出的字符出现次数:
{}内部为数字,是表示前面的字符要重复的次数。
注意:{}左右都要加上转义字符\
“{}”还可以表示一个范围,格式为{n1,n2},其中n1<n2,表示重复n1到n2次前面的字符,n2还可以为空,则表示大于等于n1。
egrep:
- 过滤出一个或多个指定的字符:
- egrep使用的“+”符号,表示匹配1个或多个+前面的字符,“+”不支持被grep使用
- {},在使用egrep时,不需要加\转义
例:
- 过滤出零个或一个指定的字符:
o?、oo?、ooo?.. 显示结果会以命令o的多少减少一个o开始 - o? :
- oo?:
- ooo?:
- oooo?:
- ooooo?:
- 过滤出字符串1或字符串2:
- egrep中()的应用:
()表示一个整体 r(oo|at)o 表示包含rooo或rato的行
()可以和其他符号组合 (oo+)表示一个或多个oo
sed工具的使用
sed是流式编辑器
- sed命令的格式为:sed -n 'n’p filename,单引号内的n是一个数字,表示第几行。
- -n选项的作用是只显示我们要打印的行,无关要紧的内容不显示
- 例:
所有行都打印出来,sed命令格式:sed -n '1,$'p filename
- 例:
- 指定一个区间打印:
- 打印包含某个字符串的行:
不要忘了/…/
在grep中使用的特殊字符(^、$、.、*等),也能在sed中使用
- 选项-e可以实现多个行为:
- 删除某些行:
-d:表示删除的动作
不仅可以删除指定的单行以及多行,还可以删除匹配某个字符的行,还可以删除从某一行开始到文档最后一行
注:这个操作只是在显示器屏幕上并不显示这行,原文档还是好的
- 替换字符或字符串:
s:表示替换
g:表示本行全局替换 //如果不加g,则只替换本行出现的第一个
例:
- 除了/作为分隔符,还有#和@:
- 如何删除文档中所有的数字或字母:
- 调换两个字符串的位置:
- 在sed中,小括号属于特殊符号,需要在前面加转义字符\,替换时则写成\1、\2、\3的形式
- 清晰版:-r选项
- sed在某一行前后增加指定内容:
- 直接修改文件的内容:
awk工具的使用
-
awk也是流式编辑器
-
针对文档中的行来操作,一行一行的执行
-
截取文档中的某个段
-F:作用是指定分隔符 //如果不加-F选项,则以空格或者tab为分隔符
print为打印,用来打印某个字段
$1、$2分别为第1个字段,第2个字段,以此类推
$0表示整行
注意:
awk格式:-F后面紧跟单引号,单引号内为分隔符。
print的动作要用{}括起来,否则会报错
print可以打印自定义的内容,自定义内容要用双引号括起来
- 匹配字符或字符串:
- awk可以让某个段去匹配
- ~是匹配的意思,也可以多次匹配
- 条件操作符:
awk可以用逻辑符号进行判断 // == 、> 、 >= 、< 、<= 、 !=
和数字比较时,要把比较的数字用双引号引起来,就不会认为是数字,而认为是字符,不加双引号就认为是数字
- uid大于等于600的行,awk把所有的数字当作字符了(不理想状态):
- uid大于等于600:
- !=不匹配:
- 大/小于:
- awk还可以使用&&和||,分别代表“并且”和“或者”
- &&:
- ||:
- awk的内置变量:
awk常用的变量有OFS、NF和NR
OFS和-F有类似功能,也是用来定义分隔符,但它用在输出的时候定义
NF表示用分隔符分隔后一共有多少段
NR表示行号
- OFS的用法:
- 高级一些的用法:
- NF:
- $NF是最后一段的值:
- NR:
- 可以使用NR作判断:
- NR配合段匹配使用:
- awk中的数学运算:
- awk可以更改字段:
- 对各个段的值进行数学运算:
- 计算某个段的总和: