私はやっていましたが、ここで説明されているように、ファイルで cmp: EOFcmp -l file.bin file2.bin
を取得し始め、Windows/Linux の行末の問題が疑われました。バイナリデータをいくつかの順序で分割する必要があるため、プロファイリングを行いました。この問題は、サイズが 1 GB の一部のファイルのみに関するものであることに気付きました。
からの出力od -c file.bin
0435500 \n <A5> \n Y \n f \n p \n <A9> \n A \n W \n 202
0435520 \n <B0> \n M \n t \n 202 \n <B1> \n i \n i \n 227
0435540 \n 221 \n Y \n ; \n <B2> \n 225 \n < \n J \n 217
0435560 \n <A9> \n < \n 211 \n <AB> \n 201 \n T \n y \n 204
0435600 \n 212 \n \ \n v \n p \n | \n 9 \n M \n u
0435620 \n 214 \n < \n r \n <A0> \n <AF> \n X \n W \n 204
0435640 \n <A5> \n B \n a \n 207 \n <AA> \n S \n ^ \n |
0435660 004 \r \n > 003 <ED> 003 <E8> \f . 003 <EC> \f * 004 032
0435700 \f h \f m \f i \f h \n o 004 024 \n k \n <A5>
0435720 \n <A2> \n = \n k \n p \n <B1> \n I \n ^ \n y
0435740 \n 227 \n < \n T \n | \n 224 \n 8 \n w \n 202
\r \n
ここで、0435660 行に1 つの出力が表示されます。合計で11 matches on 11 lines
、60 文字の合計行数が 0571520 の場合。そのため、Windows の行末はファイル コンテンツの 0.001% であるように見えますが、これは通常の場合よりも大幅に小さくなっています。ただし、少数のファイルにこの問題があり、元のデータ ソースにはありません。これは、これがデータ処理の問題であることを示唆しています。これらのエンディングが Windows の改行であることを確認するのに十分ですか?
私のファイルには、それぞれ固定長でなければならないイベントが含まれています。dos2unix
イベントの長さを変更できないため、ここでうまく機能するかどうかはわかりません。\r\n
Windows の行末を持つイベントを削除するか、Windows の EOFを に置き換える必要があると思います\0\n
。ただし、一部のイベントの長さを変更せずにリテラル文字列をコンテンツに追加することでこれを実行できるかどうかはわかりません。一部のイベントの長さを変更すると、システムが機能しなくなります。
バイナリ データで Windows/Unix EOF 警告を処理するには?