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