パートナーというファイルがあります。たとえば、次のようになります。
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