1

私はこのようなデータセットを持っています

tack2@domain.com,2009-11-27
overflow@domain2.com,2009-11-27
overflow@domain2.com,2009-11-27

column2 の同じエントリをすべて削除するコマンドを実行しているとき

sort -t ',' -k2 stars.txt -u

列 1 のエントリを削除しています。列 2 の重複エントリを削除するには、-k3フラグを入力する必要があります。

sort -t ',' -k3 stars.txt -u

なぜそれが起こっているのか誰にも説明できますか?列を削除するためにファイル内の列に +1 を入力する必要があるのはなぜですか?

4

2 に答える 2

2

私のシステムでは、すべて正しく動作します:

$ sort -t, -k1 -u 1.txt 
overflow@domain2.com,2009-11-27
tack2@domain.com,2009-11-27

$ sort -t, -k2 -u 1.txt 
tack2@domain.com,2009-11-27

ロケールが原因である可能性があります。LANG=C を指定してコマンドを再実行していただけますか?

$ LANG=C sort -t, -k1 -u 1.txt 
$ LANG=C sort -t, -k2 -u 1.txt 
于 2013-02-04T14:28:48.543 に答える
1

これは典型的な awk ジョブであり、並べ替えは必要ありません。試してみたい場合に備えて、ここに短い行を 1 つ追加します。

awk -F, '!a[$2]++' file

仕事をします。

于 2013-02-04T15:28:27.460 に答える