一致する文字列で一意の行を取得する

一致する文字列で一意の行を取得する

次のような繰り返しIDを含むJSON形式のレコードテキストファイルがあります。

{"ID":"93" , "ST":[42,77,51]}
{"ID":"21" , "ST":[43,4]}
{"ID":"94" , "ST":[65,11,4]}
{"ID":"93" , "ST":[42,77,51,29,63]}
{"ID":"73" , "ST":[21,20]}
{"ID":"94" , "ST":[65,11,4]}
{"ID":"77" , "ST":[87]}

重複項目をフィルタリングし、常に最初の一致を維持したいと思います。 ID が同じレコードの場合、ST フィールドは同じでも異なる場合もあります。

出力は次のとおりです。

{"ID":"93" , "ST":[42,77,51]}
{"ID":"21" , "ST":[43,4]}
{"ID":"94" , "ST":[65,11,4]}
{"ID":"73" , "ST":[21,20]}
{"ID":"77" , "ST":[87]}

同様の質問がありましたここただし、この場合、編集中のデータファイルはコンマ区切りのファイルです。ここではJSONデータを処理しており、目標は同じID値(正規表現一致可能)を持つ行を探して最新の行を維持することです。 awk、sed、または純粋なコマンドラインツールを使用してこの問題を解決する方法を知っている人はいますか?

ベストアンサー1

awk最初のフィールド(スペースで区切られたフィールド)でのみ一般的な重複排除技術を使用できます。

awk '!count[$1]++'

おすすめ記事