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
沒有留言:
張貼留言