Linux
從查找表中分配值的 Shell 腳本太慢了
我正在嘗試使用 shell 腳本從查找文件中分配一些變數。
我有一些工作,但似乎不必要的慢。
腳本:
while read line do code=`echo $line | awk -F' ' '{print $1}'`; device=`echo $line | awk -F' ' '{print $2}'`; state=`echo $line | awk -F' ' '{print $3}'`; if [[ $code == $message ]] then echo "Translated: $device-$state"; fi done <CODE-LIST.txt
程式碼列表.txt:
MQTT-CODE DEVICE STATE 1-1-32-16236607 RGB_LED ON 1-1-32-16203967 RGB_LED OFF
有沒有更快的方法來做到這一點?(也許是 awk 或 sed)
感謝您的幫助!
怎麼樣:
while read code device state junk; do if [[ $code == $message ]]; then echo "Translated: $device-$state" fi done <CODE-LIST.txt
使用額外的程序(即每次都分叉 awk)會減慢它的速度。
read
將讀取多個欄位,以分隔$IFS
(預設值是所有空格)。列出的最後一個變數將接收該行的其餘部分(如果有)。我只是想知道
$message
應該從哪裡來。也許在程式碼片段之外?編輯:如果程式碼部分只會在輸入中出現一次,那麼
break
一旦找到它就可以退出循環;這也會加快速度。