9.4/9.5 sed



9.4/9.5 sed

2018-4-26_sed

2018-4-26_51cto_02



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

2018-4-26_sed_03


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

2018-4-26_sed_04

2018-4-26_2018-4-26_05


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


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

  2018-4-26_2018-4-26_06

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


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

2018-4-26_2018-4-26_07

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


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



2018-4-26_2018-4-26_08

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


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

2018-4-26_sed_09


先拷贝一份

2018-4-26_sed_10

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

2018-4-26_2018-4-26_11

只剩4行了。

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



把test.txt重新拷贝回来

sed 还有替换的功能

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


做一个操作

2018-4-26_51cto_12

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


2018-4-26_2018-4-26_13

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

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

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



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


在所有的行前加个aaa

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

2018-4-26_sed_14