使用: Unix 2.6.18-194.el5
この結合ステートメントが一致から値/インデックスを省略しているという問題があります。値が 11 ~ 90 (約 350 万のエントリのうち) であることがわかり、外国の文字を探してみましたが、何かを見落としている可能性があります (隠し文字を表示するために cat -v を試しました)。
これが私が使用している結合ステートメントです(セキュリティのために出力列を単純化しただけです):
join -t "|" -j 1 -o 1.1 2.1 file1 file2> fileJoined
file1 の内容 (最初の 20 個の値):
1 3 7 11 12 16 17 19 20 21 27 28 31 33 34 37 39 40 41 42
file2 の内容 (最初の 50 個の値で、一致する場所を確認できます):
1|米国 2|米国 3|米国 4|米国 5|米国 6|米国 7|米国 8|米国 9|米国 10|米国 11|米国 12|米国 13|米国 14|米国 15|米国 16|米国 17|米国 18|米国 19|米国 20|米国 21|米国 22|米国 23|米国 24|米国 25|米国 26|米国 27|米国 28|米国 29|米国 30|米国 31|米国 32|米国 33|米国 34 |US 35|US 36|US 37|US 38|US 39|US 40|US 41|US 42|US 43|US 44|US 45|US 46|US 47|US 48|US 49|US 50|US
私の最初のテストでは、file2 が原因のようです。値が 1 ~ 100 の新しいファイルを作成すると、結合ステートメントを file1 と完全に一致させることができるためです。ただし、同じファイルは file2 と一致しません。
もう 1 つの奇妙な点は、ファイルの長さが 350 万レコードで、値 90 で再び一致し始めることです。たとえば、fileJoined の出力は次のようになります (最初の 20 個の値のみ)。
1|1 3|3 7|7 90|90 91|91 92|92 93|93 95|95 96|96 97|97 98|98 99|99 106|106 109|109 111|111 112|112 115| 115 116|116 117|117 118|118
私が試した他のことは次のとおりです。
- vi を使用して手動で新しい行 11 を入力します (結合ステートメントではまだ一致しません)。
- コードをメモ帳にコピーし、vi の行を削除してからコピーし直します (同じ結果、一致する 11-90 はありません)。
- 11 ~ 90 行を削除して、問題が 90 ~ 170 に移行し、移行しないかどうかを確認します。
私が見逃しているいくつかの隠された値があると思いますか、または file1 の 11 - 90 は file2 の 11 - 90 と同じバイナリ同等物ではありませんか?
私はここで迷子になっています。どんな助けでも大歓迎です。