2017-04-07 50 views
2

我期望從這一命令不同的輸出:uniq的治療線爲相等時,他們沒有

$ echo -e "あいうえお\nオエウイア" | uniq -c 
     2 あいうえお 

的兩行是相同。
比較這個例子,如預期工作:

$ echo -e "aiueo\noeuia" | uniq -c 
     1 aiueo 
     1 oeuia 

這是一個Unicode或UTF-8的問題?我沒有找到任何支持「異國情調」角色的選項。

編輯:我使用日語輸入排序時遇到類似的問題。輸入表格a\nb\na\nb\n(或者,省略'\ n',abab)保持這種方式,我期望它是aabb或至少bbaa

+0

在我的環境中,它按預期工作。你正在使用哪個版本的'uniq'和'sort'?我的是Linux上的uniq(GNU coreutils)8.26' – ymonad

+0

我的是GNU coreutils 8.23,Ubuntu。 – Higemaru

+0

我確認在某些語言環境中,'uniq'的行爲就像你的問題。但是,我無法重現「排序」問題。檢查你的'LANG','LC_ALL',或'locale'命令的輸出,並嘗試像'echo -e「這樣的東西」。 LC_COLLATE = C uniq -c或echo -e「a \ nb \ na \ nb \ n」| LC_ALL = C排序# – ymonad

回答

1

你去 - echo -e "あいうえお\nオエウイア" | uni2ascii -q | uniq -c | ascii2uni

+0

作品,謝謝!有趣的是,你有任何解釋爲什麼普通uniq /排序有這種奇怪的行爲?我的意思是,有什麼用的是排序順序,它說 Higemaru

+0

誰知道?可能在uniq源代碼中有一些默認行爲,以及它如何處理超出特定unicode範圍的非ascii字符或字符。也許這是一個語言環境問題。請接受我的答案,因爲它幫助你:) – Sheinbergon

+0

夠公平的,謝謝! – Higemaru