2013/12/11

Grep And Sed

grep 是 Linux 用來找尋檔案符合你想要搜尋文字的程式,而 sed 是用來取代單一檔案內文的功能,兩者搭配起來十分強大,先簡單介紹一下參數,參考於鳥哥的 Linux 私房菜

grep

-i:不區分大小寫地搜索。默認情況區分大小寫, 
-l:隻列出匹配的文件名, 
-L:列出不匹配的文件名, 
-w:隻匹配整個單詞,而不是字符串的一部分(如匹配 'magic',而不是 'magical')
-C:匹配的上下文分別顯示[number]行, 

sed

-n:使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的資料一般都會被列出到螢幕上。但如果加上 -n 參數後,則只有經過 sed 特殊處理的那一行(或者動作)才會被列出來。
-e:直接在指令列模式上進行 sed 的動作編輯;
-f:直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的 sed 動作
-r:sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)
-i:直接修改讀取的檔案內容,而不是由螢幕輸出。

範例

grep -ir 'LBJ' . # 不分大小寫遞迴搜尋內含 LBJ 內容的文件
grep -irl 'LBJ' . # 不分大小寫遞迴搜尋內含 LBJ 內容的文件,只列出檔案名稱
grep -ir 'LBJ' . | grep -v 'wade' # 不分大小寫遞迴搜尋內含 LBJ 內容的文件,並且排除有 Wade 的文件
grep -rl 'LBJ' . | xargs sed -i 's/lbj/bosh/gi' # 不分大小寫將 lbj 取代為 bosh
sed -e 's/lbj/bosh/gi' x.txt # 不分大小寫將單一檔案的 lbj 取代為 bosh

沒有留言: