百万行を含む大きなテキストファイルがあります。私の特定のテキストに一致する同じ行を見つけ、最初の項目をそのままにしたいと思います。どんなアイデアがありますか?
したがって、アルゴリズムはおおよそ次のようになります。
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のコンテンツを強化する必要があるかもしれません。練習用に残しておきます。