Text an markierte Ausgabe von awk anhängen

Text an markierte Ausgabe von awk anhängen

Ich habe eine Funktion, die einen Dateinamen annimmt. Sie führt dann einen Befehl aus und filtert die Ausgabe (exklusiv) zwischen zwei Mustern. Anschließend gibt sie durch Kommas getrennte Werte mit der Dateinamenausgabe des Befehls aus.

Hier ist die Funktion und die erwartete Ausgabe:

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
.
.
.

awkIst es möglich , command und den Befehl zu kombinieren ? Ich kann die „markierten“ Zeilen scheinbar nicht mit der Variable xargs printfanhängen .$line

Antwort1

Es klingt, als ob Sie die Shell-Variable an awk übergeben möchten, linedamit Sie sie drucken können, wenn flagsie ungleich Null ist

Ex.

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

Siehe auch

Antwort2

Habe es mit dem Below-Befehl versucht und es hat gut funktioniert

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

verwandte Informationen