0

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

134 Apple
345 Strawberries
45 Pears
1450 Oranges

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

134 Apple
345 Strawberries
1450 Oranges

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

我已经尝试过(只是为了直观地打印结果,因为我不知道如何将提示定向到“if 命令”中的文件)

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

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

4

2 回答 2

1

如何用这个单线做:

awk '($1+0)>70{print > "new.txt"}' file
于 2013-03-07T15:31:09.500 回答
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

which bash 不知道如何解释。

于 2013-03-07T15:19:25.703 回答