sed工具

一、sed工具

  • 1、sed可以实现grep的功能,但是比较麻烦,没有颜色显示,它的强项就是查找替换;

    匹配:
    sed -n '/root/'p 1.txt
    sed -n '/r+t/'p 1.txt 它等于 sed -nr '/r+t/p 1.txt
    sed -n '/^1/'p 1.txt
    sed -n '/r..o/'p 1.txt

  • 2、打印指定的行

    sed -n '2'p 1.txt 打印第二行
    sed -n '2,5'p 1.txt 打印2至5行
    sed -n '2,$'p 1.txt 打印2至最未行
    sed -n '1,$'p 1.txt 打印全部行

  • 3、多项匹配

    -e 我在同一个表达式里面,我不仅要匹配还要打印出来,就是做多个动作

sed -e '1'p -e '/root/'p -e '/oo/'p -e '/ro/'p 同时匹配三个项

4、不分大小写匹配

sed -n 'ro'Ip 1.txt

  • 5、删除

    sed '1,10'd 1.txt 除了前十行,把剩下的行列出来。不删除原文件;

sed -i '1,10'd 1.txt 删除1-10行

sed -i 'user'd 1.txt 删除文件里面所有user字符

  • 6、替换

    sed '1,10s/root/toor/g' 1.txt :把1-10行的所有root替换成toor ,g:全局替换

sed r '1,10s/ro+/rt/g' 1.txt

head 1.txt |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
我们把前10行调换第一段跟最后一段替换位置,
s 不指定行数,
([^:]+)非:的字符,如果sed用()一定要用-r选项
: 分隔符,(我们把这一段,中间一段,最后一段)
\1 代表第一个()
\2 代表第二个()
\3 代表第三个()
因为我们要把最后一段跟最前一段进行调换,那么我们就要进行调换。

head 1.txt |sed 's/\/root/123/g' 把/root/替换成123,如果有/,那么我们就得脱义。

head 1.txt |sed 's//sbin/nologin/123/g' 把/sbin/nologin 替换成123,因为里面存在多个/,那我们就得脱义,得写成:head 1.txt |sed 's/\/sbin\/nologin/g 或者写成 head 1.txt |sed 's@/sbin/nologin@g' 或者我们用#代替/

head 1.txt |sed 's/[a-zA-Z]//g' 删除文档里面所有字母。
head 1.txt |sed -r 's/(.*)/aaa:&/'
把所有行的前面加上一个字符串aaa, 使用小括号(),一定要加-r选项,小括号()里面的内容,我们可以用\1或者& 表示。

一定要多多练习grep ,sed ,awk ;多练才有效果!!!

猜你喜欢

转载自blog.51cto.com/10690709/2108376
sed