Для извлечения имени файла потребуется первая строка «Идентификатор»:
awk '
!/^ *$/ {BUF = BUF RS $0
}
! FN &&
/Identifier/ {FN = $NF ".txt"
gsub (/"/, "", FN)
}
/END JOB/ {print BUF > FN
BUF = FN = ""
}
' file
Он пропускает пустые строки, добавляет фактическую строку в буфер, создает имя файла в первом (FN пустом )вхождении «Идентификатор», удаляя все "
, и печатает буфер в END JOB
, сброс BUF
и FN
на пустое место.
Обычно это делается путем печати всей строки снова и снова, используя возврат каретки вместо перевода строки, чтобы вернуть курсор в начало строки, а не в следующую. Например,
for i in {0..20}; do
printf "ETA %2.1ds [%-20.${i}s]\r" "$((20-i))" "####################"
sleep 1
done
printf "\n"
Возврат каретки представлен \r
во многих контекстах, вдохновленных C -.
Более сложные дисплеи обычно строятся с использованием библиотеки стилей curses -. Это то, как много полноэкранных -приложений «текстового -режима» обрабатывают свой вывод; см., например, Midnight Commander .