数ビットのソフトウェアをフェッチしてビルドするためのシェルスクリプト(bash)を書いています。このスクリプトはまた、いくつかの小さな構成ファイルを書き込み、いくつかの既存の構成ファイルを変更する必要があります。 bashスクリプトからテキストファイルの数行を見つけて置き換えるための最良の方法は何ですか?
これはsed
の仕事のように聞こえますが、構文がわかりません...
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
sed s/@var@/$VALUE/g <config.in >config
ですが、スラッシュに注意してください/
in $VALUE
-エスケープするか、別の区切り文字を使用する必要がある場合があります。