逐行读取并执行if命令

时间:2013-03-07 15:14:01

标签: bash if-statement count while-loop

我有以下问题。我有这样一个文件:

134 Apple
345 Strawberries
45 Pears
1450 Oranges

我想要做的是读取每一行,如果值在上面,例如70,将字符串写入另一个文件,如:

134 Apple
345 Strawberries
1450 Oranges

我认为关键是命令读取行如果,但我不知道如何组合它们

我已经尝试过(只是为了对结果进行可视化打印,因为我不知道如何在“if命令”中将提示定向到文件)

READ=awk '{print $1}' mylist.txt
if [ $READ -gt 70]; then echo "you have more that 70 fruits"
fi

但它不起作用,因为(我认为)它不仅读取“数字”而且读取“单词”或读取所有数字而不仅仅是唯一数字。它给了我这个错误:“一元运算符预期”

2 个答案:

答案 0 :(得分:1)

while read count fruit ; do
  if [ $count -gt 70 ]; then
    echo $count $fruit
  fi
done < mylist.txt > newlist.txt

将输出写入newlist.txt。

你得到“一元运算符期望”的原因是因为所有数字都在READ变量中相互放置,因此你的if语句变为:

if [ 134 345 45 1450 -gt 70]; then

哪个bash不知道如何解释。

答案 1 :(得分:1)

用这个单线程怎么做:

awk '($1+0)>70{print > "new.txt"}' file