以下を含むテキストファイルがありますt1.txt
。
300
400
500
600
今、このテキストで450未満の数字がいくつかあることを確認したいと思います。次のコードを提供します。
b=0
for i in $(cat t1.txt)
do
if [$i -lt 450]
then
((b=b+1))
fi
done
echo b
しかし、うまくいきません。
どうすればいいですか?ありがとうございます。
答え1
b=0
for i in $(cat t1.txt)
do
# convert float to int
i=$(echo $i | cut -d. -f1)
if [ $i -lt 450 ] # comment: need spaces next to the the square brackets
then
((b=b+1))
fi
done
echo $b # comment: need to $
答え2
awkはこんなことがうまくいきます:
$ awk '$1<450{c++} END{print c+0}' t1.txt
2
仕組み:
$1<450 {c++}
この変数は、最初のフィールドが450未満の行に対して1ずつ増加します
c
。END{print c+0}
すべての行を読み取った後、
c
値が印刷されます。
これらの数値は整数でも浮動小数点数でもかまいません。 awkは両方理解しています。
答え3
#!/bin/bash
while read line
do
if [ "${line}" -lt "450" ]
then
count=$((count+1))
fi
done < t.txt
echo ${count}