私は現在BASHを使ってcsvファイルを読み取ろうとしています。 csvファイルの10番目の[]値は、指定されたシステムクラスとシステムID []と[](カスタム)に対して$f10
0より大きくなければなりません。最新情報が最後に記録されたため、ファイルを編集しています。以下はコードスニペットです。 [私のコードがwhileとifループに入るかどうかを確認するためにエコーをそこに入れたので無視します]:m_class
m_id
tac
IFS=","
while read f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15
do
echo "this is while loop"
if [ "$f7" == "EnHr" ] && [ "$f10" -gt 0 ] && [ "$f4" == "$m_class" ] && [ "$f5" == "$m_id" ]
then
hex_sensor_data=$f10
echo "IN IF LOOP: $hex_sensor_data"
break
fi
echo "HEX DATA $hex_sensor_data"
done <<<"tac /DIRECTORY/TO/FILE.csv | sed 's/o,632/o,101/g' | sed 's/o,938/o,103/g' | sed 's/o,510/o,112/g' | sed 's/ombo,713/ombo,102/g'"
このwhileループは、m_class m_idのゼロ値と$f10
16進値をレンダリングします。break
ループから呼び出した後、その値に対していくつかの処理を実行したいとwhile read
思います。hex_sensor_data
尋ねる:欲しい最後csvファイルの10番目のスペースに0より大きい値があり、csvファイルの7番目の値はEnHr、4番目と5番目の値は値を含みます。与えられたものについて m_class
そしてm_id
それぞれ。これを行うには、csvファイルを下部(最新情報)から上部(最も古い情報)に読み込む必要があり、tac
パイプ操作とともにこれも実行しています。助けてくれてありがとう!