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

        一文讀懂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號
        主站蜘蛛池模板: 久久精品视频免费| 国产精品v欧美精品v日韩| 99爱在线精品免费观看| 日韩精品人成在线播放| 国产99精品一区二区三区免费| 亚洲精品国产精品乱码视色| 国产精品午夜免费观看网站| 国产在视频线精品视频二代| 欧美精品v欧洲精品| 日韩精品国产自在欧美| 国产精品视频九九九| 尤物国产在线精品福利一区| 2021国产精品视频| 99久久国产热无码精品免费| 无码精品人妻一区二区三区人妻斩| 欧美国产成人精品一区二区三区| 国产成人精品一区在线| 亚洲精品二三区| 亚洲精品乱码久久久久久自慰| 国产精品国产亚洲精品看不卡| 最新国产在线精品观看| 久久国产精品一区| 国内精品久久久久久久影视麻豆 | 成人区人妻精品一区二区不卡网站| 亚洲午夜精品第一区二区8050| 久久精品国产色蜜蜜麻豆| 国产在线精品一区二区不卡麻豆| 国产精品美女网站在线观看| 国产精品va久久久久久久| 丁香色婷婷国产精品视频| 亚洲国产精品热久久| 四虎精品成人免费永久| 91精品成人免费国产片| 777欧美午夜精品影院| 久久se精品一区二区| 久久99精品国产99久久| 日本精品久久久久中文字幕| 丝袜美腿国产精品视频一区 | 亚洲精品无码永久中文字幕| 无码精品久久久天天影视| 无码人妻精品一区二区三区久久 |