ループを読みながら

ループを読みながら

以下のファイルがあります

var     3   2014   string
var1    4   2011   string4
var2    6   1999   string2
var3    1   2016   string6

次に、列の1つを数値と比較してから何かをエコーするwhile readループがあります。ところで、私が望むフレーズではなく、他のフレーズが出ました。

while read num
do
if [ "$num" = "0" ]; then
echo "Number is equal to zero"
else
echo "number is not equal to 0"
fi
done < home/dir/file.txt | awk '{print $2}' 

上記の内容をエコーするのではなく、ファイルの2番目の列をエコーし​​ます。

ベストアンサー1

あなたは試す必要があります

awk '{print $2}' home/dir/file.txt | while read num
do
  if [ "$num" = "0" ]; then
    echo "Number is equal to zero"
  else
    echo "number is not equal to 0"
  fi
 done 

ハイブリッド awk/bash ソリューション。

他の人が指摘したように、awkリダイレクトは後で発生します。

おすすめ記事