行番号に基づいて文字列を置き換える

行番号に基づいて文字列を置き換える

複数のファイルで特定の文字列を置き換えたい状況があります。

文字列の置き換えAAA別の文字列を使用してください血液脳関門しかし、AAAで始まるかAAAで終わる文字列がたくさんあるので、34行で文字列を1つだけ置き換え、残りは変更せずに保持したいと思います。

すべてのファイルで、この文字列が34行目になるように行番号として指定できますか?

答え1

sedに行番号を指定し、awkにNR(レコード数)を指定できます。

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

答え2

file_recordの3行目を変更したいとしましょう。

sed -i "s/`head -3 file_record | tail -1 `/replaced/" file_record

関連情報