uniqがUnicodeと文字が1つしかない行を無視するのはなぜですか?

uniqがUnicodeと文字が1つしかない行を無視するのはなぜですか?

アメリカ辞書と英国辞書を1つの大きな辞書にマージしようとしていて、親セットから重複した辞書をすべて削除しようとしていますが、uniqは「épée」などの単語や単一文字を出力しないようです。

これが私が使用しようとしているものです:

LC_COLLATE=en_US.UTF-8 cat american-english british-english |sort|uniq -u > unique_sorted_combined_dict

私がこうすれば:

LC_COLLATE=en_US.UTF-8 cat american-english british-english |sort > sorted_combined_dict

「épée」と他の同様の単語が単一の文字で表示されます。

ここに何か抜けましたかuniq

違いがある場合は、Ubuntu 12.10でGNU coreutilsのuniqを使用していることに注意してください。

ベストアンサー1

LC_COLLATEコマンドにのみ設定しcat(使用しない)、sortおよびに設定する必要がありますuniq

また、LC_CTYPEutf-8に設定する必要があるかもしれません。そうしないと、混乱を招く可能性があります。私が設定するLC_ALL到着en_US.UTF-8

uniq -u報告のみユニークいいですね。したがって、これらの1文字の単語が複数回出現したときに現れないのは正常です。

私のシステムでは重い剣2回表示されます。

$ cat american-english british-english | sort | grep -x 'épée'
épée
épée

おそらくあなたはsort | uniqまたはsort -u

おすすめ記事