Я использую awk
для форматирования входного файла в выходной файл. У меня есть несколько шаблонов для заполнения переменных (например, «какой-то шаблон» в примере). Эти переменные печатаются в требуемом формате в блоке END
. Вывод должен быть сделан там, потому что порядок появления во входном файле не гарантируется, но порядок в выходном файле должен быть всегда одним и тем же.
BEGIN {
FS = "=|,"
}
/some pattern/ {
if ($1 == 8) {
var = $1
} else {
# Incorrect field value
exit 1
}
}
END {
# Output the variables
print var
}
Итак, моя проблема заключается в операторе exit
в шаблоне. Если есть какая-то ошибка и вызывается эта команда, не должно быть никакого вывода или, самое большее, сообщение об ошибке. Но, как сказано в руководстве gawk (здесь), если команда exit
вызывается в блоке шаблона, по крайней мере будет выполнен блок END
. Есть ли способ поймать выход , например:
if (!exit_invoked) {
print var
}
или какой-либо другой способ избежать печати вывода в блоке END
?
Stefan
edit:Использовал решение из шелтера.