Bashスクリプトを使用してテキストファイルの一部を置き換える

Bashスクリプトを使用してテキストファイルの一部を置き換える

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

関連情報