1. ホーム
  2. unix

[解決済み] Unixでソートせずにファイル内の重複行を削除する方法

2022-04-22 19:51:43

質問

Unixでファイル内の重複した行を削除する方法はありますか?

でできるんですが sort -uuniq コマンドを使用したいのですが sed または awk .

そんなことが可能なのか?

どのように解決するのですか?

awk '!seen[$0]++' file.txt

seen は連想配列で、AWK はファイルのすべての行をこの配列に渡します。もしその行が配列にない場合は seen[$0] は false と評価されます。そのため ! は論理NOT演算子で、falseをtrueに反転させる。AWKは、式が真と評価された行を表示します。

を使用します。 ++ インクリメント seen そうすると seen[$0] == 1 の後に行が見つかり、その後 seen[$0] == 2 といった具合です。 AWKは 0"" (空文字列)をtrueに設定します。に重複する行がある場合は seen では !seen[$0] は false と評価され、その行は出力に書き込まれません。