Как использовать awk для использования пустых строк в качестве разделителей записей и использования новых строк в качестве разделителей полей?

Да, вы можете использовать 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 — это количество байтов для записи.

0
22.10.2019, 12:49
2 ответа

В перле:

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есть пустая строка.

1
28.01.2020, 02:29

Попробуйте это,

awk NF=NF RS="" FS="\n" OFS=":" ORS="\n"  File.txt

Record:One
Record:Two
2
28.01.2020, 02:29

Теги

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