正则表达式之sed

  • grep命令还不够强大,它只能用于查找,而不能进行替换。这里就需要用到sed以及awk命令了,他们能把替换的文本输出到屏幕上,而且还有其他丰富的功能。它们都是流式编辑器。是针对文本的行来进行操作的。

(1) 打印出包含指定字符串的行

sed -n '/root/'p test.txt   //打印出包含root的行

这里写图片描述

(2)同时也是支持.或者*+

sed -nr '/o+t/'p test.txt等于 sed -n '/o\+/'p test.txt 

这里写图片描述
(3)指定要过滤出 的字符出现的次数。

sed -nr '/o{2}/'p  test.txt

这里写图片描述

(4)过滤出字符串1或者字符串2

sed -nr '/root|var/'p test.txt

这里写图片描述 或者使用-e选项,效果是一样的

sed  -e '/root/'p  -e '/var/'p -n test.txt

这里写图片描述 如果2个要求都满足,那么会打印2次。

(5)打印指定的行

sed -n '3'p  test.txt  //需要打印第几行就写数字几, -n选项的作用就是只打印我们需要的那行,其他的不显示。

这里写图片描述如果是打印多行可用,隔开 。例:

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

(6)其他应用

sed -n '/^s/'p test.txt //打印出以s开头的行。
sed -n  '/in$/'p  test.txt //打印出以in结尾的行
sed -n  '/.+root.+/'p   test.txt //打印出root字符串在行中间的行。

这里写图片描述

(7)匹配时不区分大小写

sed  -n   '/var/'Ip test.txt //匹配var字符串,不区分大小写。且I不能跟在-n后面

这里写图片描述

(8)删除指定的行

sed  '3'd  test.txt  //删除第3行,但是并不会删除真实文件的内容,这里只是不显示出来而已。

这里写图片描述

要删除真实文件的内容,可以加上-i选项。

sed -i '1,15'd test.txt

这里写图片描述

(9)指定性删除

sed -i '/home/'d test.txt  //删除包含home字符串的行。

这里写图片描述

  • 替换字符串,与vim中的替换方式很类似。
    (1) sed '1,5s/root/toor/g test.txt //将文件中第一到第五行中所有出现的root替换为toor

这里写图片描述

(2)

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

这里写图片描述

(3)也可以写成这样

sed  's@/sbin/nologin@315@g'  test.txt

这里写图片描述
(4)删除所有的英文字母

 head test.txt  |sed    's/[a-zA-Z]//g'  //将所有的英文字母删除,也就是替换为空。 

这里写图片描述

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

这里写图片描述

  • 在某行前添加指定内容。
sed  's/^.*$/123&/' test.txt  //文件中所有行的行首添加123字符。这里的&表示(^.*$/)

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值