私のbash-fooはちょっと錆びているので、ファイルから部分的な重複を除去する巧妙な方法があるかどうかを見たいと思っていました。私は、次の形式で数千行を含むファイルの束を持っている:テキストファイルから部分的な重複を削除する
String1|String2|String3|String4|String5|String6|...|String22|09-Apr-2016 05:28:03|x
基本的に、それは最後の2列は、タイムスタンプとxはで、パイプで区切られた文字列の束です。私がしたいのは、すべてのファイルを連結し、すべての部分的な複製を削除することです。私は、String1からString22まで一致するファイル内の行として部分的な重複を定義していますが、タイムスタンプは異なる場合があります。例えば
、含むファイル:
String1|String2|String3|String4|String5|String6|...|String22|09-Apr-2016 05:28:03|x
String1|String2|String3|String4|String5|String6|...|String22|09-Apr-2016 12:12:12|x
String124|String2|String3|String4|String5|String6|...|String22|09-Apr-2016 05:28:03|x
になるでしょう:
String1|String2|String3|String4|String5|String6|...|String22|09-Apr-2016 05:28:03|x
String124|String2|String3|String4|String5|String6|...|String22|09-Apr-2016 05:28:03|x
(選択されたタイムスタンプは関係ありません)。
アイデア?あなたがこれを行うことができawk
を使用
より慣用的だと思います'かなり効率的に'を '非常に非効率的に'置き換えます - これは、相当に大きなファイルに対して同等のawkスクリプトよりも1桁遅く実行されます。 [なぜシェルを使ってループを処理するかをテキストで判断する](http://unix.stackexchange.com/questions/169716/whyis-using-a-shell)を参照してください。 -loop-to-process-text-consider-bad-practice)を使用します。 –