百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> 一文读懂shell编程三剑客之一的sed下令-linux运维
分享文章到:

一文读懂shell编程三剑客之一的sed下令-linux运维

发布时间:10/01 来源:未知 浏览: 关键词:
作为shell编程三剑客之一的sed,重要程度可想而知。sed是一个流编程器,每次处置一行,处置完后再接着处置下一行,它支撑正则,功能非常的强大。 作为shell编程三剑客之一的sed,重要程度可想而知。sed是一个流编程器,每次处置一行,处置完后再接着处置下一行,它支撑正则,功能非常的强大。但sed比个别的下令复杂一些,选项繁多,想要把握它是需要花点功夫的。下面我们通过众多的例子来看看这个强大的sed下令的作用吧!

语法格局:sed [选项] [行动]

常用选项如下:

  • -n:sed默许会导出所有stdin内容,但加上该选项后,只显示经过sed处置过的行。

  • -e :允许在统一行里施行多个行动

  • -f:从一个文件中读取行动

  • -i:直接修改文件而不是输入到屏幕上(惊险)

行动中的参数及太多了,下面列一下:

  • a:在匹配行下面参加一行

  • c:将匹配的行修改新的内容

  • d:删除匹配的行

  • i:在匹配行前参加内容

  • p:打印

  • s:替代匹配行的内容

范例一:打印/etc/passwd文件的第5-10行

# sed -n '5,10p' /etc/passwd
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

范例二:删除/etc/passwd文件的第2行,第2到10行

# cat -n /etc/passwd | sed '2d' | sed '5,10d'

除了上面的办法,我们还可以用-e选项来完成

# cat -n /etc/passwd | sed -e '2d' -e '5,10d'

范例三:猎取办事器ip地址

这个案例非常的棒,倡议大家细心看看

# ifconfig eth0
eth0: flags=4163  mtu 1500
        inet 172.26.9.143  netmask 255.255.240.0  broadcast 172.26.15.255
        ether 00:16:3e:0a:01:ad  txqueuelen 1000  (Ethernet)
……

我们需要的是172.26.9.143。

首先步,猎取我们想要处置的行

# ifconfig eth0 | sed -n '/.*inet/p'
        inet 172.26.9.143  netmask 255.255.240.0  broadcast 172.26.15.255

第二步,将不需要的信息给替代位空白字符

# ifconfig eth0 | sed -n '/.*inet/p' | sed 's/.*inet\s\+//g'
172.26.9.143  netmask 255.255.240.0  broadcast 172.26.15.255

接下来把ip地址背面的全部替代位空就行了

# ifconfig eth0 | sed -n '/.*inet/p' | sed 's/.*inet\s\+//g' | sed 's/\s\+.*//g'
172.26.9.143

下面我们来说说上面的例子,第一首先步我们运用了-n和p来猎取我们想要的行。然后,我们将不需要的信息进行过滤,需要注意的时,正则中\s+表示至少匹配一个空格,但在这里需要在加号前运用转义字符\。

范例四

最后一个范例,我给出我昨天一个真实案例。需求是这样的,猎取一段文本中的url地址,但不需要前面的http://。局部文本内容如下:

   北京
     上海
     天津
     重庆

山东 
 济南
 青岛

下面我们分几步去完成该需求,第一,将不含url地址的行全部过滤

# sed -n '/http:/p' a.txt

然后,将不需要的信息全部替代位空白字符即可。先把http://及以前字符全部删除

sed -n '/http:/p' a.txt | sed 's/.*http:\/\///g'

,接着把双引号及之后字符全部删除

# sed -n '/http:/p' a.txt | sed 's/.*http:\/\///g' | sed 's/".*//g'

此刻屏幕导出的内容如下

haikou.hellozx.com sanya.hellozx.com kunming.hellozx.com dali.hellozx.com xining.hellozx.com yinchuan.hellozx.com wulumuqi.hellozx.com ……

以上就是一文读懂shell编程三剑客之一的sed下令的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板