2013-03-07 146 views
0

我有以下问题。我有这样一个文件:逐行读取并执行if命令

134 Apple 
345 Strawberries 
45 Pears 
1450 Oranges 

什么,我想要做的是阅读的每一行,如果该值高于为实例70,写入字符串像另一个文件:

134 Apple 
345 Strawberries 
1450 Oranges 

我认为,关键是在命令同时读取线如果,但我不知道如何将它们结合起来

我试过(只是有结果的视觉打印,因为我不知道如何获得定向到一个文件的提示在“如果命令”)

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

,但它不工作,因为(我觉得)它读取不仅是“数字”,而且还“字”或读取所有数字而不仅仅是一个唯一的数字。它给了我这个错误:“一元运算符预期”

回答

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

将输出写入newlist.txt。

你拿“一元算料”的原因是因为所有的号码都在你读的变量之后对方提出,因此你的if语句变成:

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

该庆典不知道如何解释。

+0

伟大的,它的工作原理!谢谢! – fabioln79 2013-03-07 15:24:49

1

怎么样这一个班轮做到这一点:

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