添付の写真からわかるように スクリーンショット
非常に大きな単語リストファイルをsortコマンドを使用してソートした後、Splitコマンドを使用して分割しました。そこにリストされている単語がazの順序でソートされていることを確認しました。
その後、コマンドを実行しましたが、sort -u
一意の単語が削除されていないことを確認しました。 (ファイルが少し小さいので一部を削除しましたが、すべてではありませんでした。)
私は何が間違っていましたか?
全体的な目標:私の全体的な目標は、すべての単語のリストを取得し、それを大きなファイル(25gig)に入れてから、一意の単語をソートして削除し(約40%削減)、ファイルを管理可能なサイズに分割することです。 WindowsプログラムまたはLinuxコマンドは機能しません。
答え1
sort -u 一意の削除ワイヤー。したがって、潜在的な問題は、これらの3行が同じではなく、sort -u
すべてが残るということです。
foo
foo
foo
どんなに詳しく見ても、理由に気づきにくいです。つまり、次xxd
のような16進ダンプを実行しない限り:
0000000: 666f 6f0a 666f 6f20 0a66 6f6f e280 820a foo.foo .foo....
0x0a
16進ダンプに慣れていない場合は改行文字です。したがって、3つの「foo」は次のようになります。
666f 6f 0a
666f 6f20 0a
666f 6fe2 8082 0a
ああ!これは実際にはfoo
、foo<SPACE>
(0x20
)とfoo<EN-SPACE>
(0xe28082
、UTF-8でエンコードされたU + 2002)です。
似たようなことがあったかもしれません。見えない文字を表示するには、16進エディタまたはテキストエディタセットを使用する必要があります。たとえば、にgvim
含まれる内容は次のとおりです:set list
。カーソルの下にどの文字があるかを確認するためにコマンドを入力したところ、ga
U + 2002と表示されます。また、行末($
)が予期した位置になく、2行の後にスペースがあることもわかります。