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

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

我有一個需要文件名的函數。然後,它運行一個命令並過濾兩個模式之間的輸出(不包括),然後輸出逗號分隔的值以及命令的檔案名稱輸出。

這是函數和預期輸出:

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變數一起附加。

答案1

聽起來您想將 shell 變數傳遞line到 awk 中,以便flag在非零時可以列印它

前任。

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

也可以看看

答案2

嘗試使用下面的命令,效果很好

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

相關內容