web-dev-qa-db-ja.com

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

数ビットのソフトウェアをフェッチしてビルドするためのシェルスクリプト(bash)を書いています。このスクリプトはまた、いくつかの小さな構成ファイルを書き込み、いくつかの既存の構成ファイルを変更する必要があります。 bashスクリプトからテキストファイルの数行を見つけて置き換えるための最良の方法は何ですか?

これはsedの仕事のように聞こえますが、構文がわかりません...

4
Frozenskys

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
4
user1606
1
oadams

sed s/@var@/$VALUE/g <config.in >configですが、スラッシュに注意してください/ in $VALUE-エスケープするか、別の区切り文字を使用する必要がある場合があります。

1
alex