我正在编写一个 shell 脚本(bash)来获取和构建一些软件。该脚本还编写了几个小配置文件,并且需要更改几个预先存在的配置文件。从 bash 脚本中查找和替换文本文件的几行的最佳方法是什么?
这听起来像是 的工作sed
,但我不明白语法......
答案1
awk/sed/bash/Python/Perl/Ruby 和大多数其他工具/编程语言都可以对文件进行操作。 “最好”的方式是您熟悉且舒适的方式。如果您对 sed 一无所知,请查找并了解它。否则,如果你有一种你知道的编程语言,就用它吧。这是一个 bash 脚本示例
exec 6<"file"
while read -r line <&6
do
case "$line" in
*pattern* )
line="${line//word/replace}"
esac
echo "$line"
done > "out"
exec 6<&-
mv out file
sed 示例
sed 's/word/replace/g' file
awk 示例
awk '{gsub(/word/,"replace")}1' file > t && mv t file
Python 示例(更高版本使用“with”)
for line in open("file"):
if "pattern" in line:
line=line.replace("pattern","replace")
print line
答案2
答案3
sed s/@var@/$VALUE/g <config.in >config
/
,但要注意 --中的杂散斜杠$VALUE
,您可能需要转义它们或使用另一个分隔符。