Добрый день.
Есть некоторая задача, я пытаюсь решить ее с помощью awk. Интерес чисто практический, и инструмент не принципиален (awk,perl,sed,etc...).
Сама задача состоит в изменении строк в зависимости от данных некоторой предыдущей строки.
В тексте есть вхождения типа таких:
заголовок;sometext
;string1
;string2
;string3
Хочу из них сделать вот такое:
заголовок;sometext
заголовок;string1
заголовок;string2
заголовок;string3
Иными словами, найдя в начале строки точку с запятой, следует найти перед ней строку, не начинающуюся с точки с запятой, и взяв оттуда весь текст от начала строки до точки с запятой (включительно), вставить его в текущую строчку.
Сейчас я наваял вот такой скрипт:
awk '/^\;/ {
target=$0;
split (header_line, header, ";");
sub(/\;/, "", target_line);
result=header[1]";"target
print result};
{header_line=$0}'
Результат работы вот пока вот такой:
заголовок;string1
;string2
;string3
То есть обрабатывается только первая строка. Как сделать так, что бы скриптом обрабатывались все строки?