如何用sed备份然后修改文件?

如何用sed备份然后修改文件?

我需要一次覆盖许多服务器上的一些配置,并且我想在创建备份时修改原始配置文件,只是出于好奇,所有这些都可以用 sed 完成吗?

有人提到了这种模式,但它不起作用。

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

答案1

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

答案2

尝试使用 awk

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

相关内容