Join:「ファイル2はソート順ではありません。」

Join:「ファイル2はソート順ではありません。」

_jeter3.txtと_jeter1.txtという2つのファイルがあります。

すべてが20列でソートされていることを確認しました。sort -c

sort -t '     ' -c -k20,20 _jeter3.txt
sort -t '     ' -c -k20,20 _jeter1.txt
#no errors

しかし、2つのファイルが必要な場合、join2番目のファイルがソートされていないというエラーが発生します。

join -t '   ' -1 20 -2 20 _jeter1.txt _jeter3.txt > /dev/null
join: File 2 is not in sorted order

理由がわからない。

cat /etc/*-release #FYI
openSUSE 11.0 (i586)
VERSION = 11.0

修正する: ' sort -f'とjoin -i(両方とも大文字と小文字を区別しない)を使用すると問題が解決します。しかし、それは私の元の質問を説明しません。

修正する:ソートと接続バージョン:

> join --version
join (GNU coreutils) 6.11
Copyright (C) 2008 Free Software Foundation, Inc.
(...)

> sort --version
sort (GNU coreutils) 6.11
Copyright (C) 2008 Free Software Foundation, Inc.
(...)

ベストアンサー1

sortUbuntu 11.04とバージョン(GNU coreutils)8.5joinの両方で同じエラーが発生しました。

彼らは明らかに互換性がありません。実際にコマンドに何か問題があるようです。 ()オプションがあるかどうかにかかわらず、特にsort違いはありません。並べ替えるときは常に前に来ます。英数字以外の文字も常に無視されるようでした(前)-f--ignore-caseaaBaBaabcab-x

Joinは反対を期待しているようですが...解決策があります。

実際、これはソート順序に関連しています。メッセージを削除するにはLANG=en_EN sort -k 1,1 <myfile> ...thenを使用してくださいLANG=en_EN join ...

国際化はすべての悪の源です...(誰もこれを明確に文書化していません)。

おすすめ記事