1

私はやっていましたが、ここで説明されているように、ファイルで 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\nWindows の行末を持つイベントを削除するか、Windows の EOFを に置き換える必要があると思います\0\n。ただし、一部のイベントの長さを変更せずにリテラル文字列をコンテンツに追加することでこれを実行できるかどうかはわかりません。一部のイベントの長さを変更すると、システムが機能しなくなります。

バイナリ データで Windows/Unix EOF 警告を処理するには?

4

3 に答える 3

0

でマニュアルを読む

info diff

cmp セクションを参照します。ただし、OSX 10.10.3 および Redhat Linux バリアントの GNU および BSD のマニュアルはまだ不完全です。

于 2015-07-04T21:51:47.050 に答える