awk: поймать `exit' в блоке END

Я использую 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:Использовал решение из шелтера.

5
задан Paused until further notice. 13 April 2012 в 16:23
поделиться