awkを使用してレコードライブラリの古いレコードを削除したいですか?

awkを使用してレコードライブラリの古いレコードを削除したいですか?

CSVファイル入力:

I,TEST1
H,TEST2
H,TEST3
I,TEST4
I,TEST5
H,TEST6
I,TEST7

結果ファイル:

I,TEST1
H,TEST2
I,TEST4
I,TEST5
H,TEST6
I,TEST7

Hタイプレコードの後に​​複数のタイプレコードがある場合にのみ削除しますI。最初のタイプを維持Hし、残りを削除します。

ベストアンサー1

大丈夫に見えます:

$ cat file1
I,TEST1
H,TEST2
H,TEST3
I,TEST4
I,TEST5
H,TEST6
H,TEST7
H,TEST9
I,TEST10
H,TEST11

$ awk -F"," '/^I/{print;f=1};/^H/ && f==1 && !seen[$1]++{print;seen[$1]=0;f=0}' file1
I,TEST1
H,TEST2
I,TEST4
I,TEST5
H,TEST6
I,TEST10
H,TEST11

おすすめ記事