uniqが韓国語の文字列を削除するのはなぜですか?

uniqが韓国語の文字列を削除するのはなぜですか?

グラフデータベースに一括インポートする220,000の名前を含むCSVファイルがあります。一括インポートでは、各ノードが一度だけ表示されるという制限が適用されるため、次のように重複sortエントリを削除したいと思いますuniq

sort all-authors.csv | uniq > unique-authors.csv

欠落しているノードの調査中に、以下の奇妙な動作が観察されました。

$ grep 이선동 unique-authors.csv
$ grep 이선동 all-authors.csv 
"이선동"
$

名前が渡されましたがsort失われましたuniq

$ sort all-authors.csv | grep 이선동
"이선동"
$ sort all-authors.csv | uniq | grep 이선동
$

次の英語以外の名前で動作します。

$ grep '잔쎈 우베' *csv
all-authors.csv:"잔쎈 우베"
unique-authors.csv:"잔쎈 우베"
$

ここで何が起こっているのでしょうか?

編集:ロケールの出力を追加する

 $ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
$

編集:1行のファイルを追加し、sort -u試行出力を追加しました。

影響を受けた文字列のみを含むファイルに対するpLumoのコメントに答えるには、次の手順を実行します。

$ grep 이선동 all-authors.csv > single-author.csv
$ sort single-author.csv | uniq
"이선동"
$

Rushのコメントへの答えsort -u

$ sort -u all-authors.csv | grep 이선동

uniqのエイリアスを設定せず、を使用して確認しましたが、alias | grep uniq何も返しません。

ベストアンサー1

次の答えに基づいて: https://stackoverflow.com/questions/5982531/behaviour-of-gnu-sort-command-with-non-letter-ascii-characters-such-as-dot-or

これは私にとってうまくいきます。

いいえLC_COLLATE=C

sort test | uniq
이선동

そしてLC_COLLATE=C

LC_COLLATE=C sort test | LC_COLLATE=C uniq
동선이
동이선
선동이
선이동
이동선
이선동

おすすめ記事