2018-4-26
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-4-26相关的知识,希望对你有一定的参考价值。
9.4/9.5 sed
9.4/9.5 sed
创建一个sed目录 把grep里的passwd拷贝过来
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
//里 可以比如比配2次o o{2} 或用或者|等符号
打印行 sed -n '2'p text.txt //打印第二行
打印2到5行'2,5', 打印5到最后一行 '5,$' ($表示末行),全部1,$
sed -e '1'p -e '/root/'p -n text.txt( -e的含义是做多个操作,打印并且匹配)
第一行是root,再次匹配到root,所以有两行一样的。
set -n '/bus/'Ip text.txt (加大i匹配不区分大小写)
sed还可以删除指定的行。 sed '*'d text.txt
sed '1,20'd test.txt (删除20行,实际上没有删除,只是屏幕上没有显示)
先拷贝一份
把前25行直接删除掉# sed -i '1,20'd test.txt(-i直接改变文件内容)
只剩4行了。
还可以针对性的删除sed -i '/user2/'d test.txt
把test.txt重新拷贝回来
sed 还有替换的功能
sed '1,10s/root/toor/g' test.txt (s就是替换的关键词,g全局替换) //1-10行中root替换成toor
做一个操作
把前十行里的首段和尾段交换。
.*算是贪婪匹配,它是从root:这个冒号开始到了:bin/bash 这个冒号,并没有匹配中间的冒号。
[^+]非冒号,一个或多个,然后就是:, .*包括了中间的好几段,然后就是最后一段与第一段相同。
最后123换成321实现首位互换。
删除所有英文字母 [a-zA-Z]替换成空//就可以了。
在所有的行前加个aaa
sed -r 's/(.*)/aaa:&/'
以上是关于2018-4-26的主要内容,如果未能解决你的问题,请参考以下文章