Anexar texto à saída sinalizada do awk

Anexar texto à saída sinalizada do awk

Eu tenho uma função que leva um nome de arquivo. Em seguida, ele executa um comando e filtra a saída (exclusiva) entre dois padrões e, em seguida, gera valores separados por vírgula com a saída do nome do arquivo do comando.

Aqui está a função e a saída esperada:

get_cons_obs() {
    local line="${1}"
    "command" -i "${line}" 2>&1 \
        | awk '/^ERROR$/{print "ERROR"} /^START$/{flag=1;next} /^END$/{flag=0} flag' \
        | xargs printf "${line},%s\n"
}
file01,thing01
file01,thing02
file01,thing03
.
.
.

É possível combinar awkcomando e xargs printfcomando? Não consigo acrescentar as linhas "sinalizadas" à $linevariável.

Responder1

Parece que você deseja passar a variável shell linepara o awk para poder imprimi-la quando flagfor diferente de zero

Ex.

awk -v line="$line" '. . . flag {printf "%s,%s\n", line, $0}'

Veja também

Responder2

Tentei com o comando abaixo e funcionou bem

awk '/pattern1/,/pattern2/{print $0","FILENAME}' filename

informação relacionada