Как распечатать имя файла, которое передается в качестве аргумента в программу awk - PullRequest
0 голосов
/ 22 октября 2018

Я использую цикл for для итерации списка файлов, и на каждой итерации я передаю одно имя файла в скрипт awk.

Я хотел бы напечатать не только код ошибки, но и имяфайл, сгенерировавший ошибку.

Что-то вроде: print error ";" THENAMEOF_THE_FILE >> file.txt;

Скрипт awk будет выглядеть так:

awk ' function errorManager(error)
{
print error >> file.txt;
}
BEGIN {error1="ERROR CODE X"}
{if (NR==1)
if(length($0) != 10)
{
errorManager(error1)
}
}
END{print "STOP"}' $1

1 Ответ

0 голосов
/ 22 октября 2018

Это то, что вы ищете:

awk '
function errorManager(idx,    errorArr, error) {
    errorArr[1] = "ERROR CODE X"
    error = (idx in errorArr ? errorArr[idx] : "Unspecified Error")
    printf "Error %s[%d]: %s\n", FILENAME, FNR, error | "cat>&2"
}
NR==1 {
    if ( length($0) != 10 ) {
        errorManager(1)
    }
}
END{ print "STOP" }
' "$1" 2>"file.txt"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...