Я делал cmp -l file.bin file2.bin
, но начал получать cmp: EOF в файле и подозревал, что проблема с завершением работы Windows/Linux, как описано here. Я должен разбить двоичные данные на некоторую последовательность, поэтому я сделал некоторое профилирование. Я заметил, что эта проблема касается только некоторых моих файлов размером 1 ГБ.Как работать с предупреждениями EOF Windows/Unix в двоичных данных?
Выход из 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. В общей сложности 11 matches on 11 lines
, когда общее число строк 60 символов 0571520. Так что, кажется, Windows, линия окончаний 0.001 % содержимого файла, которое значительно меньше, чем в обычных случаях. Только эта проблема имеет меньшинство файлов, а исходные источники данных этого не делают. Это говорит о том, что это проблема в обработке данных. Достаточно ли подтверждения того, что эти окончания являются линиями Windows?
Мои файлы содержат события, которые должны иметь фиксированную длину каждый. Так что я не уверен, насколько хорошо dos2unix
будет работать здесь, так как я не могу изменить длину события. Мне кажется, мне нужно удалить те события, у которых есть линейные окончания Windows, или заменить окна EOF \r\n
на \0\n
. Однако я не уверен, могу ли я сделать это, добавив литеральную строку в контент, не изменяя длину некоторых событий. Ситуация заключается в том, что если я изменяю длину некоторых событий, система перестает работать.
Как работать с предупреждениями EOF Windows/Unix в двоичных данных?
В двоичных файлах нет строк, двоичные данные - двоичные данные. Некоторые комбинации '\ r \ n' могут быть частью более длинных двоичных последовательностей, может случиться так, что в некоторых местах есть« 0x0d »и« 0x0a ». –
@JoachimPileborg Почему 'cmp -l' иногда дает такое предупреждение? Как сравнить лучшие двоичные данные? –
Вы должны думать о данных, которые фактически хранятся в файлах. Мы не можем сказать, что лучше всего сравнивать, помимо команды 'cmp', поскольку мы действительно не знаем данные или формат. В файлах могут быть встроенные тексты, с или без символов новой строки, мы не знаем. –