Linux

如何使用 sed 備份然後修改文件?

  • November 25, 2021

我需要一次覆蓋許多伺服器上的一些配置,並且我想在創建備份時修改原始配置文件,這一切都可以用 sed 完成,只是為了好奇?

有人提到了這種模式,但它不起作用。

new_port="..."
sed -i .bak "s/port=2334/${new_port}/g"
sed -i .bak "s/port=2334/${new_port}/g"

幾乎是您正在尋找的東西;解決方法是刪除之後的空格-i

sed -i.bak "s/port=2334/${new_port}/g"

如果new_port只有埠號,您還必須重複port=

sed -i.bak "s/port=2334/port=${new_port}/g"

sed所有這些只有在您在表達式之後實際指定要處理的文件的名稱時才有效。

用 awk 試過

awk '{print $0}' file >file.backup && awk '{gsub(/port=2334/,"port=${new_port}",$0);print }' file >tmpfile && mv tmpfile file

引用自:https://unix.stackexchange.com/questions/678998