[英]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.