2018-4-26

9.4/9.5 sed



9.4/9.5 sed

image.png

image.png



创建一个sed目录 把grep里的passwd拷贝过来

image.png


sed强项在于替换(替换一些指定的字符)。


语法sed '//'    这个 //里就是需要匹配的字符串

sed  '/root/'p text.txt  //列举出所有

 sed  -n '/root/'p text.txt //只列出有root的行,其中root可以是r.t  r*t r+t(r+t需要脱译,即r\+t)

如果不想打脱译符号 sed -nr 'r+t' text.txt

image.png

image.png


//里 可以比如比配2次o  o{2} 或用或者|等符号


 打印行  sed -n '2'p text.txt   //打印第二行

  image.png

打印2到5行'2,5',  打印5到最后一行 '5,$'  ($表示末行),全部1,$


sed -e '1'p -e '/root/'p -n text.txt( -e的含义是做多个操作,打印并且匹配)

image.png

第一行是root,再次匹配到root,所以有两行一样的。


set -n '/bus/'Ip text.txt (加大i匹配不区分大小写)



image.png

sed还可以删除指定的行。 sed '*'d text.txt


sed '1,20'd test.txt (删除20行,实际上没有删除,只是屏幕上没有显示)

image.png


先拷贝一份

image.png

把前25行直接删除掉# sed -i '1,20'd test.txt(-i直接改变文件内容)

image.png

只剩4行了。

还可以针对性的删除sed -i '/user2/'d test.txt



把test.txt重新拷贝回来

sed 还有替换的功能

sed '1,10s/root/toor/g' test.txt (s就是替换的关键词,g全局替换) //1-10行中root替换成toor


做一个操作

image.png

把前十行里的首段和尾段交换。


image.png

.*算是贪婪匹配,它是从root:这个冒号开始到了:bin/bash 这个冒号,并没有匹配中间的冒号。

[^+]非冒号,一个或多个,然后就是:, .*包括了中间的好几段,然后就是最后一段与第一段相同。

最后123换成321实现首位互换。



删除所有英文字母  [a-zA-Z]替换成空//就可以了。


在所有的行前加个aaa

sed -r 's/(.*)/aaa:&/'

image.png





猜你喜欢

转载自blog.51cto.com/13646170/2108380