站長資訊網
最全最豐富的資訊網站

一文讀懂shell編程三劍客之一的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<UP,BROADCAST,RUNNING,MULTICAST>  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/.*inets+//g' 172.26.9.143  netmask 255.255.240.0  broadcast 172.26.15.255

接下來把ip地址后面的全部替換位空就行了

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

下面我們來說說上面的例子,首先第一步我們使用了-n和p來獲取我們想要的行。然后,我們將不需要的信息進行過濾,需要注意的時,正則中s+表示至少匹配一個空格,但在這里需要在加號前使用轉義字符。

范例四

最后一個范例,我給出我昨天一個真實案例。需求是這樣的,獲取一段文本中的url地址,但不需要前面的http://。部分文本內容如下:

  <td width=820>&nbsp;<a href=http://beijing.hellozx.com onclick="co('beijing')"><font color="red">北京</font></a>     &nbsp;<a href=http://shanghai.hellozx.com onclick="co('shanghai')"><font color="red">上海</font></a>     &nbsp;<a href=http://tianjin.hellozx.com onclick="co('tianjin')"><font color="red">天津</font></a>     &nbsp;<a href=http://chongqing.hellozx.com onclick="co('chongqing')"><font color="red">重慶</font></a></td></tr> <tr><td width=80 height=30 align=right> <b><font style="font-size:14px;">山東</font>:</b>&nbsp;</td><td width=820> &nbsp;<a href="http://jinan.hellozx.com" onclick="co('jinan')"><font color=red style="font-size:14px;">濟南</font></a> &nbsp;<a href="http://qingdao.hellozx.com" onclick="co('qingdao')"><font color=red style="font-size:14px;">青島</font></a>

下面我們分幾步去完成該需求,首先,將不含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 ……

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产四虎免费精品视频| 久久久综合九色合综国产精品| 国产精品免费视频一区| 国产精品1024永久免费视频| 久久精品无码专区免费东京热| 青青青国产精品国产精品久久久久| 国产区精品福利在线观看精品| 日韩毛片免费在线观看| 国产在视频线在精品| 日韩精品免费电影| 四色在线精品免费观看| 精品久久久无码人妻中文字幕豆芽 | 无码日韩精品一区二区免费暖暖| 自拍偷自拍亚洲精品情侣| 精品无人区无码乱码大片国产| 一区二区不卡久久精品| 精品香蕉伊思人在线观看| 亚洲日韩一区二区一无码| 日韩免费电影网址| 日韩少妇无码喷潮系列一二三| 国内精品国语自产拍在线观看91| 亚洲国产成人久久精品大牛影视| 97久久精品无码一区二区天美| 久99久热只有精品国产女同| 2021国产精品自产拍在线观看| 99久久国产综合精品swag | 精品麻豆国产色欲色欲色欲www | 亚洲日韩中文字幕| 日韩AV影院在线观看| 久久精品无码一区二区三区日韩| 又紧又大又爽精品一区二区| 国产四虎精品8848hh| 日韩一卡2卡3卡4卡新区亚洲| 日韩一区精品视频一区二区| 日韩av无码久久精品免费| 日韩精品射精管理在线观看| 免费视频精品一区二区| 亚洲精品国产va在线观看蜜芽| 国产精品亚洲产品一区二区三区| 久久se精品一区二区影院| 成品人和精品人的区别在哪里 |