多くのファイルで特定の文字列を置き換えたい状況があります
文字列[〜#〜] aaa [〜#〜]を別の文字列に置き換えます[〜#〜] bbb [〜#〜]で始まる文字列がたくさんありますAAAまたはAAAで終わる。行34の1つだけを置き換え、他はそのままにしたい。
行番号で指定することは可能ですか?すべてのファイルで、この文字列は34行目にあります。
行番号はsedで、NR(レコード数)はawkで指定できます。
awk 'NR==34 { sub("AAA", "BBB") }'
または、コマンドラインで複数のファイルを指定する場合は、FNR(ファイル番号レコード)を使用します。
awk 'FNR==34 { sub("AAA", "BBB") }'
または
sed '34s/AAA/BBB/'
sedでインプレース置換を行うには
sed -i '34s/AAA/BBB/' file_name