名前タグを使用して繰り返されるコードブロックの特定の行の編集

名前タグを使用して繰り返されるコードブロックの特定の行の編集

繰り返しテキストブロック(100以上のブロック)を含むファイルがあります。各繰り返しブロックには同じ数の行があり、すべてのブロックでAB_ *を置き換えたいと思いますNodeNames, N1 N2 N3 N4 N5NodeNames, N1 N2 N3 N4(*特定のABブロックの特定IDを示します。)

このファイルの形式は次のとおりです。

DeviceName,  AB_12445
line 2
<empty line)
line 3
line 4
line 5
empty line
line 6
line 7
empty line
NodeNames, N1 N2 N3 N4 N5
line 9


DeviceName,  AB_0483
..
..
..
NodeNames, N1 N2 N3 N4 N5
line 9

特定のABブロック(例:AB_0483)に必要な出力は次のとおりです。

DeviceName,  AB_0483
..
..
..
NodeNames, N1 N2 N3 N4
line 9

更新されたチャンクと影響を受けないチャンクを含む出力全体を新しいファイルに保存したいと思います。

ベストアンサー1

コメントに基づいてコマンドを更新しました。

awk '/AB_/{a=1}!a{print;next}a{if($0!~/NodeNames/){print}else{a=0;printf("NodeNames, N1 N2 N3 N4\n")}}' input > output

おすすめ記事