一部のソフトウェアをインポートしてビルドするためのシェルスクリプト(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 '{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
スラッシュをエスケープするか、別の区切り文字を使用する必要があります。