2014年6月1日日曜日

cygwinでsort、uniqのエラーが出る時は LC_ALL='C'を付ける。

cygwinでsort、uniqのエラーが発生しました。
When I was using cygwin, "sort" and "uniq" became an error. 

     sort: 文字列の比較に失敗: Invalid or incomplete multibyte or wide character
     sort: 問題を回避するために LC_ALL='C' を指定してください.
     Comparison of the character string went wrong. :Invalid or incomplete multibyte or wide character
     Please specify "LC_ALL='C'", in order to avoid a problem. 
     
とエラーが出たので、
Such an error display was carried out. 

     # export LC_ALL='C'

とやってみました。確かに正常にsort出来たんだけど、今度はlsすると文字化けの嵐~!
In the as directed, I ran the command statement.The sort command worked fine.But, It has been garbled text.

# export LC_ALL='C' とすると、以下の様になっちゃって日本語が化けるんですね。
It will become the following setup if this command is executed.And Japanese encoding goes wrong.

     # locale
     LANG=ja_JP.SJIS
     LC_CTYPE="C"
     LC_NUMERIC="C"
     LC_TIME="C"
     LC_COLLATE="C"
     LC_MONETARY="C"
     LC_MESSAGES="C"
     LC_ALL=C

で、どうすれば良いかと言うと一時的にロケールを変更すれば良さげです。
That is, the method of changing a locale temporarily is good. 

     export LC_ALL="ja_JP.SJIS"

で、ロケールを戻して、
A locale is returned to the original setup by the above-mentioned command. 

     cat hogehoge.txt | cut -d ',' -f 2 | LC_ALL='C' sort | LC_ALL='C' uniq

てな感じで使うと正常に動作します。うーん。面倒くさい。
If the above-mentioned command is executed, it will operate well. 

バージョンは、以下の通りです。
Software version is,

cygwin               1.7.17-1
sort (GNU coreutils) 8.15
uniq (GNU coreutils) 8.15


Evernote はあなたがすべてを記憶し、手間をかけずに整理できるようにお手伝いします。Evernote をダウンロードする

0 件のコメント:

コメントを投稿

コメントをどうぞ