Сценарий Bash - двоичный файл чтения

Я плохо знаком со сценариями, но у меня есть большое программирование опыта на языках, таких как C# и Java.

У меня есть файл, который содержит двоичные данные. Я хочу записать сценарий Bash, который читает год, месяц и день, содержавшийся в том файле, таким образом, я могу отсортировать связанные файлы MOD в папки согласно дате, они были зарегистрированы. Я испытываю затруднения при нахождении способа считать двоичные данные и парсинге их в сценарии удара. Там какой-либо путь состоит в том, чтобы сделать это?

6
задан Joel 29 December 2009 в 00:02
поделиться

3 ответа

Для этого можно использовать od (плюс голова и awk для небольшой постобработки). Чтобы получить год:

year=$(od -t x2 --skip-bytes=6 --read-bytes=2 file.moi | head -1 | awk '{print $2}')

Для месяца:

month=$(od -t x1 --skip-bytes=8 --read-bytes=1 file.moi | head -1 | awk '{print $2}')

А день:

day=$(od -t x1 --skip-bytes=9 --read-bytes=1 file.moi | head -1 | awk '{print $2}')
8
ответ дан 9 December 2019 в 22:35
поделиться

Для этого я бы порекомендовал использовать питон.

Однако, если вы настаиваете на баше, я бы попробовал использовать либо sed в бинарном режиме (никогда не пробовал), либо использовать dd для извлечения специфических байтов, а затем преобразовывать их.

.
2
ответ дан 9 December 2019 в 22:35
поделиться

вы можете искать в сети модули для интерпретации MOI-файлов (на Perl или Python). В противном случае, я не думаю, что вы можете получить такую же дату из двоичного файла, потому что если вы заглянете внутрь, то это действительно "мусор", начиная с его двоичного файла. Хотя вы также можете дать команде строки попробовать посмотреть, есть ли читаемые строки, которые соответствуют дате

.
0
ответ дан 9 December 2019 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: