Ваша первая строка выходит неправильно, потому что действие {FIELDWIDTHS ="3 4 3"}
не применяется до тех пор, пока первая строка не будет прочитана и проанализирована.
Если вы переместите определение FIELDWIDTHS
внутрь блока BEGIN
, оно будет работать, как задумано:
awk 'BEGIN{print "Header"; FIELDWIDTHS ="3 4 3"}{print $1"|"$2"|"$3"|"};END{print "Footer"}' file8
Обратите внимание, что FIELDWIDTHS
может поддерживаться только в GNU Awk(gawk
).