ルックアップテーブルから値を割り当てるシェルスクリプトが遅すぎる

ルックアップテーブルから値を割り当てるシェルスクリプトが遅すぎる

ルックアップファイルからいくつかの変数を割り当てるためにシェルスクリプトを使用しようとしています。
仕事が少しありますが、不必要に遅いと思います。

スクリプト:

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)
助けてくれてありがとう!

ベストアンサー1

どうですか?

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ループを見つけてループを終了すると作業速度が速くなります。

おすすめ記事