2012年3月5日 星期一

[ Linux 小技巧 ] 透過 sed 命令濾掉文件的註解行 (# 開頭)

[ Linux 小技巧 ] 透過 sed 命令濾掉文件的註解行 (# 開頭)

範例說明 :
透過 sed 將 /etc/pure-ftpd/pure-ftpd.conf 中含有 Anonymous 字串的每一行都列印出來, 並且濾掉註解

行 (#開頭) 與空白行 :


--------------------------------
linux-tl0r:~ # cat /etc/pure-ftpd/pure-ftpd.conf | grep 'Anonymous' | sed 's/^#.*//g' <將有 'Anonymous' 字串行 grep 出來後, 透過 sed 濾掉 註解行>

AnonymousOnly no
NoAnonymous no

AnonymousCanCreateDirs yes



AllowAnonymousFXP no
<有空白行出現>
AnonymousCantUpload no
linux-tl0r:~ # cat /etc/pure-ftpd/pure-ftpd.conf | grep 'Anonymous' | sed 's/^#.*//g' \ <使用 '\' 換行編輯>
> | sed '/^$/d'
AnonymousOnly no
NoAnonymous no
AnonymousCanCreateDirs yes
AllowAnonymousFXP no
AnonymousCantUpload no <成功濾出含有 'Anonymous' 字串的行數並排除註解行與空白行!!!>
--------------------------------


example:
示範過一個刪除空列的命令:
/^$/d

sed 字串編輯器
這部份要先偷懶一下, 因為之前已經寫過一些 sed 的簡易說明,這裡直接把它拿過來, 同時加上一些補充.

  • 將 filename 檔案內的 Giga 字串取代成 GigaRama
  • sed s/Giga/GigaRama/ filename 但是我們這樣只能做 stdout , 若是要把 file1 裡面的 Giga 都取代成 GigaRama 的話, 我們可以這樣做 : cat file1 | sed s/Giga/GigaRama/ > file2
  • 將 filename 檔案內的 xfish 字串那一行刪除
  • sed /xfish/d filename 同樣, 若是要將修改過的檔案變成一個新檔案, 可以這樣做 : cat file1 | sed /xfish/d > file2
  • 指定哪一行,將之刪除
  • sed '4d' filename 這裡是指定第四行 刪除
  • 將filename的第一行到第幾行,將之刪除
  • sed '1,4d' filename 這裡是指定第一行到第四行 刪除
  • 將filename的第一行到第五行印出
  • sed -n 1,5p filename
  • 將 file 檔案內的出現 xfish 字串的那一行單獨寫到 file2 內
  • sed -n '/xfish/w file2' file
  • 萬用字元的使用,將 file 檔案內的 xfis? 哪一行寫到 file2 內
  • sed '/xfis./w file2' file
  • 萬用字串的使用,將 file 檔案內的 xfis* 哪一行寫到 file2 內
  • sed '/xfis*/w file2' file
  • 選定字元的使用,將 file 檔案內的 xfis[abcd] 哪一行寫到 file2 內
  • sed '/xfis[abcd]/w file2' file
  • 特別符號的取消,利用 /
  • sed s/\/\/ file
  • 一行的起頭的取代,將 file 檔案的每一行起頭都加上 Hi..
  • sed s/^/Hi.. / file
  • 一行的結尾的取代,將 file 檔案的每一行結尾都加上 Hi..
  • sed s/$/Hi.. / file
  • 多重條件的指定,利用 -e 選項
  • sed -e 's/Giga/GigaRama/' -e 's/^/Hi../' file


沒有留言:

如何在Windows的事件檢視器event viewer,查詢開機關機的紀錄

Windows 如何 事件檢視器 查詢開機關機紀錄 Step1: 打開windows的 「 事件檢視器 」,開啟「 建立自訂檢視… 」視窗,在「事件記錄檔」選項,將「Windows 紀錄」內勾選「系統」選項。 Step2: 內含/排除事件識別碼: 」排除事件識別碼打「6005,6...