我有以下问题。我有这样一个文件:
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
但它不起作用,因为(我认为)它不仅读取“数字”而且读取“单词”或读取所有数字而不仅仅是唯一数字。它给了我这个错误:“一元运算符预期”
答案 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