特定のテキストを含む重複行を削除する

特定のテキストを含む重複行を削除する

百万行を含む大きなテキストファイルがあります。私の特定のテキストに一致する同じ行を見つけ、最初の項目をそのままにしたいと思います。どんなアイデアがありますか?

したがって、アルゴリズムはおおよそ次のようになります。

For all lines in text file
   Find duplicate lines
   If duplicated line contains our text
      Remove all these lines except the first one

たとえば、「Word」というテキストの重複行を探しています。
ファイルの例:

Test1 Test2 Test3 Test4 Test5
Test1 Test2 Test3 Test4 Test5
Word1 Word2 Word3 Word4 Word5
Test1 Test2 Test3 Test4 Test5
Word1 Word2 Word3 Word4 Word5

結果ファイル:

Test1 Test2 Test3 Test4 Test5
Test1 Test2 Test3 Test4 Test5
Word1 Word2 Word3 Word4 Word5
Test1 Test2 Test3 Test4 Test5

ベストアンサー1

簡単なアプローチは次のとおりです。

awk '!/Word/ || !a[/Word/]++' file

awk 'm=!/Word/ || !a[!m]++'

つまり、Wordなしですべての行を印刷するか、Wordがある場合はWordを使用して最初の行のみを印刷し、残りは抑制します。

注:Wordのコンテンツを強化する必要があるかもしれません。練習用に残しておきます。

おすすめ記事