如何「搜尋並取代」多個文件?

如何「搜尋並取代」多個文件?

我使用該grep命令在許多文件中搜尋字串。有沒有類似「搜尋和替換」的東西?

答案1

您正在尋找sed命令。例如,要將目前目錄中所有文字檔案中的“dog”替換為“cat”:

sed -i 's/dog/cat/' *.txt

答案2

我想到了 sed。例子:

sed s/cat/dog/ <input >output

這會在一行中搜尋cat,並將dog放在檔案輸入中的位置上,然後寫入檔案輸出。

答案3

sed是正確的工具;但是,作為替代方案,您甚至可以使用ex以下命令vim

vim -c 'args <files> | argdo %s/cat/dog/g | x'

其中<files>是要在其中進行替換的文件或模式的清單。

答案4

您可以在 Ex 模式下使用 Vim:

for b in *.txt
do
  ex -sc '%s/OLD/NEW/g|x' "$b"
done
  1. %選擇所有行

  2. s代替

  3. g取代每行中的所有實例

  4. x儲存並關閉

相關內容