Да, вы можете использовать dd или написать свою собственную программу и использовать функцию поиска в файле, чтобы перейти к смещению, в которое вы хотите записать. Например, если вы хотите записать 64 байта из input.bin, начиная со смещения 2048, вы можете сделать следующее...
dd if=input.bin of=/sys/bus/i2c/devices/1-0050/eeprom bs=1 count=64 skip=2048 seek=2048
Skip — это смещение для начала для входного файла, а seek — это смещение для начала для выходного (eeprom ). Count — это количество байтов для записи.
В перле:
perl -l -p -e 'BEGIN {$/=""; $\="\n\n"}; s/\n/:/mg' input
-l
позволяет Perl автоматически обрабатывать окончания записи -.
-p
помещает неявный while... print
цикл вокруг скрипта, так что он автоматически считывает, обрабатывает и затем печатает каждую запись (аналогично awk ).
установка разделителя входных записей($/
)пустым с помощью $/=""
указывает perl читать ввод в режиме абзаца (одна или несколько пустых строк отделяют каждую запись ).
$\="\n\n"
устанавливает разделитель выходных записей на два символа новой строки, так что записи разделяются пустой строкой.
затем он заменяет все новые строки в каждой записи на :
.
Это работает для любого количества полей в каждой записи. Каждая строка в записи представляет собой отдельное поле.
Пример вывода:
$ perl -lpe 'BEGIN {$/=""; $\="\n\n"}; s/\n/:/mg' input
Record:One
Record:Two
примечание :после Record:Two
есть пустая строка.
Попробуйте это,
awk NF=NF RS="" FS="\n" OFS=":" ORS="\n" File.txt
Record:One
Record:Two