【问题标题】:read line by line and do a if command逐行读取并执行 if 命令
【发布时间】:2013-02-22 20:38:46
【问题描述】:

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

134 Apple
345 Strawberries
45 Pears
1450 Oranges

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

134 Apple
345 Strawberries
1450 Oranges

我认为关键是命令 while read lineif 但我不知道如何组合它们

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

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

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

【问题讨论】:

    标签: bash if-statement count while-loop


    【解决方案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 不知道如何解释。

    【讨论】:

      【解决方案2】:

      如何用这个单线做到这一点:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-21
        • 1970-01-01
        • 2018-11-28
        • 2013-12-26
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多