Обычно вам следует опубликовать написанный вами код, чтобы знать, даже если он не работает, чтобы мы могли помочь вам, а не работать вместо вас.
Однако есть тривиальное решение, вызывающее awk
дважды. Предполагая, что ваш входной файл называется input
, вы можете попробовать /
awk 'BEGIN{FS = ": "}{print $2}' input | awk 'BEGIN{RS = ""; FS = "\n"; OFS = ";"}{print $1, $2, $3, $4, $5, $6, $8}'
Вывод:
XTREMIO;51,4f,0c,51,9d,00,05,22;XtremIO;XtremApp;10.00 GB;knocknarea_jounal;CKM00150400153
XTREMIO;51,4f,0c,51,9d,00,05,28;XtremIO;XtremApp;5.00 GB;test_rep;CKM00150400153
Объяснение: первый экземпляр awk
удаляет все в начале каждую строку до строки ": "
включительно.
Второй использует режим абзаца awk
, устанавливая разделитель записей RS
на пустую строку, что означает, что запись представляет собой каждый набор строк без пустой строки, и устанавливает разделитель полей FS
до символа новой строки. Он считывает записи и выводит поля как есть, но меняет разделитель полей и разделитель записей на соотв. ";"
и один символ новой строки (опция по умолчанию для ORS
).