sed を使用した構成ファイルの情報の検索と変更

sed を使用した構成ファイルの情報の検索と変更

パートナーというファイルがあります。たとえば、次のようになります。

abc
def
ghi

次のような別のconfファイルがあります。

part=abc
var=x
var=y
id=123

part=def
var=z
id=345

など...

私はwhileループを使用して「パートナー」の行を読み取った後、sedを使用してそのパートナーの名前を含むブロックのconfファイルを取得するシェルスクリプトを作成しています。最後に、sedを使用してid値を変更し(たとえば、123から123_1へ)、新しいブロックを別のファイルに保存します。

while read -r var || [[ -n "$var" ]]
do sed -n '/part=$var/,/^$/p' conf.cfg | xargs sed 's/id=123/id=123_1/g' >> new.txt
done

私は何が間違っていましたか?これは、出力として空のテキスト行のみを提供するためです。

答え1

コマンド引数に変数を使用する場合は、単一引用符で囲むことはできません。

シェルスクリプトの問題を解決するには、コマンドを1つずつ実行してみてください。これは問題の範囲を絞り込むのに役立ちます。

sed -n "/part=$var/,/^$/p" conf.cfg

関連情報