簡體   English   中英

Shell腳本查找和替換字符串

[英]Shell script to find and replace a string

您好,我的一位同事是程序代碼開發人員,並且在120個不同文件中具有相同的smtp服務器名稱,現在我必須將其更改為其他名稱。 但是一個接一個地做是不可能的。 我正在使用“ grep”在該目錄中的所有文件中遞歸搜索字符串。 但是我不確定grep是否可以編輯文件並將其替換為新字符串。

謝謝

這不應該在serverfault上嗎?

無論如何,您應該將findsed結合使用。

可能是這樣的:

find . -iname "<filepattern>" -exec sed -e "s/<regex to look for>/<replacement>/g" -i {} \;

使用sed

grep -rl smtp1.example.com . | xargs sed -i 's/smtp1.example.com/smtp2.example.com/g'

這意味着找到所有包含smtp1.example.com文件; 輸出他們的名字; 將每個文件名傳遞給sed命令,該命令對每個文件進行搜索和替換。

grep將僅列出實際包含文本的文件; 這樣可以最大程度地減少調用sed的文件數量。 (使用find -type f導致在任何文件上調用sed 。)

find /directory -type f -exec sed -i 's/oldname/newname/g' {} +

遞歸搜索/directory並使用sed進行搜索和替換。 {}替換為找到的文件名。

也許是這樣的嗎?

find /path/to/start/from/ -type f | xargs perl -pi -e 's/textToFind/TextToReplace/g'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM