Я плохо знаком со сценариями, но у меня есть большое программирование опыта на языках, таких как C# и Java.
У меня есть файл, который содержит двоичные данные. Я хочу записать сценарий Bash, который читает год, месяц и день, содержавшийся в том файле, таким образом, я могу отсортировать связанные файлы MOD в папки согласно дате, они были зарегистрированы. Я испытываю затруднения при нахождении способа считать двоичные данные и парсинге их в сценарии удара. Там какой-либо путь состоит в том, чтобы сделать это?
Для этого можно использовать 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}')
Для этого я бы порекомендовал использовать питон.
Однако, если вы настаиваете на баше, я бы попробовал использовать либо sed
в бинарном режиме (никогда не пробовал), либо использовать dd
для извлечения специфических байтов, а затем преобразовывать их.
вы можете искать в сети модули для интерпретации MOI-файлов (на Perl или Python). В противном случае, я не думаю, что вы можете получить такую же дату из двоичного файла, потому что если вы заглянете внутрь, то это действительно "мусор", начиная с его двоичного файла. Хотя вы также можете дать команде строки попробовать посмотреть, есть ли читаемые строки, которые соответствуют дате
.