簡體   English   中英

用awk或其他實用程序交互式解析2行?

[英]interactive parsing 2 lines with awk or other utility maybe?

我的程序在后台運行,當收到某些消息時,它將給出如下兩行輸出:

09/09 15:28:29 Tx PL HouseUnit: A2
09/09 15:28:29 Tx PL House: A Func: Off

現在,我想通過發出命令來解析單詞A2和Off以發布mqtt消息:

mosquitto_pub -q 1 -t X10/"A2" -m "Off"

我正在考慮用awk解析,但是我的問題是awk僅以交互方式解析1行。 有人有解決此問題的聰明建議嗎?

awk '{if($3 == "Tx" && $4 == "PL" && $5 == "HouseUnit:") print $6; if($3 == "Tx" && $4 == "PL" && $5 == "House:" && $7 == "Func:") print $8} {system("mosquitto_pub -q 1 -t X10/127.0.0.1/switch/"$6 -m "$8) }'

上面的代碼僅解析執行的最后一行

mosquitto_pub -q 1 -t X10/"A" -m "Off"

這是您要執行的操作的語法:

$ awk '
    ($3 == "Tx") && ($4 == "PL") {
        if ($5 == "HouseUnit:") {
            foo = $6
        }
        else if ( ($5 == "House:") && ($7 == "Func:") ) {
            system("echo mosquitto_pub -q 1 -t X10/127.0.0.1/switch/\"" foo "\" -m \"" $8 "\"")
        }
    }
' file
mosquitto_pub -q 1 -t X10/127.0.0.1/switch/"A2" -m "Off"

(在測試后刪除回聲),但如果從system()調用該程序確實有意義,則idk與僅從awk輸出值並將其從管道調用到xargs或類似對象相比是有意義的。 重命名變量foo以表示其實際含義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM