利用 grep 和 sed 在檔案內搜尋並替換字串

使用 grep 在檔案內搜尋並替換字串,是日常操作上經常用到的 shell 命令行功能,現在大概都固定住使用模式了,用 grep 負責過濾字串,sed 負責執行替換。

底下這兩個指令寫法差異,但結果相同。

▲使用 ` ` 反引號先行命令:把必須先執行的指令,夾在 ` ` 中間,會先執行此命令,再將結果傳遞給其它命令。

sed -i "s/原字串/新字串/g" `grep 原字串 -rl ./`

反引號 ` ` 括起來的部分,會被 bash shell 解釋為命令行,bash 會先執行該命令行,並以它的輸出結果代入前面 sed 命令部分。

註: ` 符號,是在標準鍵盤數字 1 左邊那個按鍵。它和 Enter 左邊那個單引號 作用不同,別弄錯。

或使用 | 管線符號:配合 xargs 取得並傳遞參數。

grep -rl "原字串" ./ | xargs -i sed -i 's/原字串/新字串/g' {}

xargs 這個指令會從標準輸入設備(standard input)讀取資料,並將這些字串當成後面指定命令 sed -i 執行時的參數。而 -i 參數就配合後面的 {} 將值一一代入,詳細就不解釋了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *