正则-sed

正则

Sed没有grep好用,但是可以替换,简单的说,grep用于查找,sed用于替换比较合适

1)Sed过滤出来的信息没有颜色显示

例如sed -n '/root/'p 1.txt 过滤出来对应的

2)sed同样支持. * 或者+号等

例如sed -n '/r*t/'p 1.txt  

sed -nr '/o+t/'p 1.txt   找出含有t前有o的打印

 

3)指定要过滤出特定的字符出现的次数

例如配置两个o出现sed -nr '/o{2}/'p 1.txt

 

4稍微复杂的过滤出字符串root或者字符串111

中间有|隔离开来sed -nr '/root|111/'p 1.txt

 

这里可以使用-e参数,效果是一样的

稍微注意的是p携带在单引号里面或者外面都可以的,而如果两个都匹配,则打印两次

 

5)可以打印指定的行

例如打印第14sed -n '14p' 1.txt

sed -n '3,5p' 1.txt  //打印3-5

 

sed  -n  '3,$'p  test.txt //打印第3行到最后一行。

 

6)其他应用

sed -n '/^s/'p 1.txt //打印出以s开头的行。

 

sed -n  '/in$/'p  1.txt //打印出以in结尾的行

 

 

sed -n  '/.+root.+/'p   1.txt //打印出root字符串在行中间的行。

 

 

7-I匹配时不区分大小写

8)删除指定的行使用d参数

sed '3'd 2.txt

 

9)指定性删除

sed -i '/abc/'d 2.txt

特别注意,这个删除是不可逆的,删除前一定要备份好数据

不加-i则不会删除掉对应的文件

这里其实sed也是只查看对应的,但是没有真正的删除

 

(10)替换

替换字符串,和vim非常的像

sed '1,10s/root/toor/g' 1.txt

 

sed -r '1,5s/ro+/b/g' test.txt //1-5行中的ro+替换为b ,加上-r选项就可以不使用转义字符

 

删除所有的英文字母

head 1.txt |sed 's/[a-zA-Z]//g'   

 

调换2个字符的位置

head |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'   //sed命令支持管道符,使用小括号把要替换的字符打包成一个整体,这里是:分割

 

添加指定内容,例如

sed  's/^.*$/123&/' 1.txt   给行首添加123

.*代表任意

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_41654660/article/details/81902180
sed
今日推荐