Solaris 資料一覧

sortを実行すると「sort: missing NEWLINE added at end of input file 」というエラーが出る

2008/1/16更新

対応バージョン: 8

指定したファイル中に現在使用しているLANG以外の文字コードが含まれている。

例えばUTF-8環境においてSJISの文字コードを含むファイルをsortしようとするとこのエラーが出る。

% locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_ALL=ja_JP.UTF-8

% sort foo
sort: missing NEWLINE added at end of input file foo
sort: foo を読み取れません。: バイトシーケンスが正しくありません。

対処としては以下の2通りの方法がある。

1. LANGを対象ファイルと同じ文字コードにする

例) 対象ファイルがSJISの場合

% setenv LANG ja_JP.PCK
% setenv LC_ALL ja_JP.PCK
% locale
LANG=ja_JP.PCK
LC_CTYPE="ja_JP.PCK"
LC_NUMERIC="ja_JP.PCK"
LC_TIME="ja_JP.PCK"
LC_COLLATE="ja_JP.PCK"
LC_MONETARY="ja_JP.PCK"
LC_MESSAGES="ja_JP.PCK"
LC_ALL=ja_JP.PCK

% sort foo > bar

2. 対象ファイルをLANGと同じ文字コードにする

例) LANGがUTF-8の場合

% mv foo foo.org
% iconv -f SJIS -t UTF-8 foo.org > foo
% sort foo > bar

関連資料・記事