Bash

將文本附加到 awk 的標記輸出

  • March 21, 2020

我有一個接受文件名的函式。然後它執行一個命令並過濾兩個模式之間的輸出(排他性),然後輸出逗號分隔的值和命令的文件名輸出。

這是函式和預期的輸出:

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命令和xargs printf命令?我似乎無法在$line變數中附加“標記”行。

聽起來您想將 shell 變數傳遞給lineawk 以便您可以在flag非零時列印它

前任。

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

也可以看看

嘗試使用以下命令,它工作正常

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

引用自:https://unix.stackexchange.com/questions/573972