
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
.
.
.
awk
Ist es möglich , command und den Befehl zu kombinieren ? Ich kann die „markierten“ Zeilen scheinbar nicht mit der Variable xargs printf
anhängen .$line
Antwort1
Es klingt, als ob Sie die Shell-Variable an awk übergeben möchten, line
damit Sie sie drucken können, wenn flag
sie 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