CentOS7 正则表达式-egrep,sed,awk

时间:2021-08-28 18:44:21

egrep  grep -E

本质区别egrep不需要加脱意字符

‘r.t’ .表示任意一个字符特殊字符也满足  不能用?

‘r*t’ *表示0个或任意个前面的字符

‘r.*t’ rt中间0到任意个字符,相当于匹配*个. 空行也包含在内 贪婪匹配

‘r+o’ + 表示一个或多个前面的字符 grep可以使用脱意字符使用\+

‘参数1|参数2’   参数1或者参数2

 

egrep ‘r{3}’  {} egrep 不需要加脱意字符   匹配3个r的行

egrep ‘r(oo){3}’   ()是把括号内容看成一个单元

 

sed  

‘p‘ 匹配打印

‘d’ 删除

-i 直接更改

sed ‘s/要替换/替换成什么/g’ 文件名  g是全局的意思

root:x:::root:/root:/bin/bash   把第一个冒号前的和最后一个冒号后的替换

心得:可以先写命令 最后再加转义字符不然容易混乱

要替换的内容有/的时候也可以用#替代/

# head passwd | sed's/\(^[^:]*\)\(:.*:\)\([^:]*$\)/\3\2\1/'

 

awk

-F ‘:’ 指定分隔符。如果不加-F则以空格或者tab来作为默认分隔符

print 打印某个字段

print的动作要用{ }括起来。打印自定义内容时需要把自定义内容用双引号括起来

$1为第一个字段  $2为第二个字段  $0表示整行

awk可以用逻辑符号进行判断。

==表示等于

!=表示不匹配

另外还有>,>=,<,<=

&& 表示并且

|| 表示或者

 

awk内置变量

NF 表示用分隔符分割后一共有多少段,列号

NR 表示行号