sed不只可以实现如grep的匹配功能,并且还能实现文本替换功能等。正则表达式
sed -n '5'p test.txt sed -n '1,5'p test.txt sed -n '1,$'p test.txt sed -n '/root/'p test.txt sed -n '/^1/'p test.txt sed -n 'in$'p test.txt sed -n '/r..o/'p test.txt sed -n 'oo*'p test.txt sed -e '1'p -e '/111/'p -n test.txt
p: 参数p表示打印
-n:只打印咱们指定的行,无关选项不加。
不加-n:会在指定行,后面显示因此其余的行。
'n':单引号里的n表示第几行;
'1,$':表示打印全部,**$**表示前面指定1行的后面的全部行
注:能够指定一个范围打印,如 sed -n '1,3' test.txt工具
//:表示匹配字符串
注: 在打印字符串时,在grep中的特殊字符(&*等)一样能在sed中使用 。
-e:加上此选项可以同时实现多个行为。如在匹配行的同时匹配一个字符串,若两个不一样的表达式,都匹配的是同一个字符串或行,那么将会打印两次。
I,大i 匹配时不区分大小写,如sed -n '/bus/'Ip /etc/passwdcode
在sed使用特殊符号+匹配时,须要加脱义符号,如 sed -n '/r+t/'p test.txt;
sed -nr: 加r命令后,就不用加脱义字符blog
d,表示删除动做,这个操做不会修改文件的实际内容文档
-i:会直接删掉文件内容,而且能指定字符串名字符串
参数s:表示替换的动做
参数g:表示本行全局替换,如不加g则只替换本行常出现的第一个字符串test
如:sed -r '1,10s/ro+/r/g' test.txt 注:这里由于sed 使用+ 因此用了 -r选项(取消脱义字符)sed
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
1.格式
s//:表示所有,不指定范围就是所有
-r:取消脱义符号
2.在调换前,咱们要先用表达式,表答咱们须要调换的字符串;
s//:表示所有,不指定范围就是所有
[^:]:表示一个非冒号的字符
[^:]+:加号表示一个或多个 ,如root
([^:]+):小括号表示等会咱们须要调用括号内的东西;
::表示间隔的特殊符号
*. **:表示所有匹配
(.*): 表示贪婪匹配,意为直到最后一个冒号为止的字符串
([^:]+):表示一个非零字符串
3.调换位置
\3:\2:\1/:这里的意思是3个字符串的位置;本应该是123 ,可是咱们要给他们调换位置,因此变成了321,冒号是间隔符号搜索
如:sed 's/[a-zA-Z]//g' test.txt语法
head test.txt |sed -r 's/(.*)/aaa:&/' &:保存搜索字符用来替换其余字符,如s/asd/&/,asd这成asd。