站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

一文讀懂shell編程三劍客之一的sed命令

作為shell編程三劍客之一的sed,重要程度不言而喻。sed是一個(gè)流編程器,每次處理一行,處理完后再接著處理下一行,它支持正則,功能非常的強(qiáng)大。但sed比一般的命令復(fù)雜一些,選項(xiàng)繁多,想要掌握它是需要花點(diǎn)功夫的。下面我們通過眾多的例子來看看這個(gè)強(qiáng)大的sed命令的作用吧!

語法格式:sed [選項(xiàng)] [動(dòng)作]

常用選項(xiàng)如下:

  • -n:sed默認(rèn)會(huì)輸出所有stdin內(nèi)容,但加上該選項(xiàng)后,只顯示經(jīng)過sed處理過的行。

  • -e :允許在同一行里執(zhí)行多個(gè)動(dòng)作

  • -f:從一個(gè)文件中讀取動(dòng)作

  • -i:直接修改文件而不是輸入到屏幕上(危險(xiǎn))

動(dòng)作中的參數(shù)及太多了,下面列一下:

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

  • c:將匹配的行修改新的內(nèi)容

  • d:刪除匹配的行

  • i:在匹配行前加入內(nèi)容

  • p:打印

  • s:替換匹配行的內(nèi)容

范例一:打印/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選項(xiàng)來完成

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

范例三:獲取服務(wù)器ip地址

這個(gè)案例非常的棒,建議大家仔細(xì)看看

# 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來獲取我們想要的行。然后,我們將不需要的信息進(jìn)行過濾,需要注意的時(shí),正則中s+表示至少匹配一個(gè)空格,但在這里需要在加號(hào)前使用轉(zhuǎn)義字符。

范例四

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

  <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;">濟(jì)南</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'

,接著把雙引號(hào)及之后字符全部刪除

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

現(xiàn)在屏幕輸出的內(nèi)容如下

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

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久er99热精品一区二区| 精品成人av一区二区三区| 久久精品国1国二国三| 成人伊人精品色XXXX视频| 2020国产精品自拍| 久久人人爽天天玩人人妻精品| 国产成人精品一区二三区在线观看| 国产精品二区在线| 四虎国产精品永久在线播放| 日韩在线视频不卡| 99精品全国免费观看视频..| 国精品无码一区二区三区在线蜜臀| 日韩精品一区二区三区视频| 亚洲av日韩综合一区在线观看| 日韩专区无码人妻| 青春草无码精品视频在线观| 午夜精品久久久内射近拍高清 | 真实国产乱子伦精品免费| 亚洲精品乱码久久久久久不卡| 中文精品一卡2卡3卡4卡| 日韩网红少妇无码视频香港| 国产精品扒开腿做爽爽爽的视频 | 国产私拍福利精品视频| 亚洲精品日韩专区silk| 思思99re66在线精品免费观看| 日韩精品无码免费专区网站| 精品999久久久久久中文字幕| 在线精品国精品国产尤物| 国产精品综合久成人| 中文无码精品A∨在线观看不卡| 日韩在线免费电影| 国产精品久久一区二区三区| 精品女同一区二区三区在线| 99久久精品全部| 国产精品久久99| 国产成人久久精品二区三区| 日韩在线免费视频| 精品亚洲成在人线AV无码| 久久久久国产精品嫩草影院| 日韩精品无码永久免费网站| 中日欧洲精品视频在线|