ルックアップファイルからいくつかの変数を割り当てるためにシェルスクリプトを使用しようとしています。
仕事が少しありますが、不必要に遅いと思います。
スクリプト:
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
ループを見つけてループを終了すると作業速度が速くなります。