sed
sed与grep比较,sed能实现grep功能,但是比较麻烦,而且没有颜色显示;sed优势在于替换一些指定的字符。
用sed实现grep匹配的功能,匹配关键词用//,-n作用是只显示我们要打印的行
sed还支持. * + 等特殊符号
sed -nr '/o{2}/'p passwd.bak,匹配两次o
sed -nr '/root|sbin/'p passwd.bak,匹配或者的用法
sed -n '1'p passwd.bak ,打印指定的行; sed -n '1,3'p passwd.bak,打印1-3行;sed -n '20,$'p passwd.bak,打印20行到末行,$表示末行
sed -n '1,$'p passwd.bak,全部打印出来
sed -e用法,在一行里执行多条命令
sed -e '1'p -e '/root/'p -n passwd.bak,先打印第一行,然后再匹配含有root的行
sed -e '1'p -e '/root/'p -e '/oo*/'p -n passwd.bak ,执行多条命令
sed -n '/bus/'Ip passwd.bak,匹配不区分大小写
sed删除指定的行
sed '1,20'd passwd.bak,删除打印出来的1-20行,实际上并没有删掉文件内容
加上-i,可以直接删除文件内容
sed查找替换,与vim类似;sed '1,10s/root/toor/g' passwd.bak,s表示替换关键词,g表示全局替换
sed -r '1,10s/ro+/r/g' passwd.bak,替换的字符串能识别正则表达式
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' passwd.bak |head,替换每行第一段和最后一段字符串的位置,以冒号为参考对象,小括号里的内容用\1、\2、\3表示
sed 's/\/root/123/g' passwd.bak |head,将/root替换成123,要用脱义符号\
或者把分隔符/换成#和@来区分
sed 's/[a-zA-Z]//g'删除文件中所有英文字母
sed -r 's/(.*)/aaa:&/' ,在所有行前面加上固定字符串,&表示前面小括号内的内容