常用指令 sed

前言

當您想要取代文字檔案某一部份的內容時 sed 指令會是您的好幫手,或是系統輸出的訊息有某些是您不需要看到的都可以利用 sed 指令來過濾掉。




實作一、利用 sed 取代檔案內某一行文字

此次實作為修改網頁分析軟體設定檔中讀取 Log 的路徑 (要分析之前的 Log 而 Log 檔案名稱為每月份無法合併成一個),而自已又懶不想一直 vi 改設定檔然後改完存檔在執行分析指令,所以這個實作就產生啦,也就是利用 sed 指令直接取代設定檔中 Log 的路徑接著就直接執行分析任務了。

例如要取代分析網頁流量的設定檔 awstats.www.conf 內讀取 Log File 的那一行內容 (ex. LogFile="/home/log/200703.log"),先把原來的 awstats.www.conf 複製成名叫 awstats.sed,然後就可以利用如下指令來取代了。
sed 's/200703.log/200704.log/' awstats.sed > awstats.www.conf

所以上列指令會把 awstats.sed 內這一行 LogFile="/home/log/200703.log" 變成 LogFile="/home/log/200704.log" 然後把內容寫入到 awstats.www.conf 內。



實作二、擷取輸出結果從第 x 行到 y 行的內容

最近要查 Dell Server 的 RAID 狀態,但輸出狀態的結果是一狗票不想每次查看狀態就要翻來翻去,所以就找了一下有沒有指令可以達成,發現 sed -n 是個可行的方式例如當我執行指令查尋 RAID 狀態,但我只想看輸出結果的第 x 行到 y 行的內容用 sed -n 就可以達成了。
 sed -n '103p':顯示輸出結果的第 103 行內容
 sed -n '103,111p':顯示輸出結果的第 103 行至 111 行內容
 sed -n '103,$p':顯示輸出結果的第 103 行至輸出結束內容


所以當我執行下列指令時就會輸出我要看的行數內容了。
/usr/local/sbin/megacli -AdpAllInfo -aALL | sed -n '103,111p'
                Device Present
                ================
 Virtual Drives    : 1
   Degraded        : 0
   Offline         : 0
 Physical Devices  : 3
   Disks           : 2
   Critical Disks  : 0
   Failed Disks    : 0




參考