所以,假设我有这个数据文件:
apples asd 45 321 7000
oranges gl 78 102 850
some ltd 83 15 500
other nova 80 50 3500
stuff 600 65 115 450
我想循环遍历每一行,得到最后一个字(这是大数字),这应该是价格。然后检查它是否小于1000
,如果是,则将其输出到另一个文件。
这就是我所拥有的:
touch items_cheaper_than_1k.txt
while read LINE
do
PRICE="$(cut -d. -f3 $LINE)"
if [$PRICE < 1000]; then
$LINE >> items_cheaper_than_1k.txt
fi
done < cars.txt
cat items_cheaper_than_1k.txt
问题是我收到了错误
cut: apples: No such file or directory
cut: asd: No such file or directory
cut: 45: No such file or directory
cut: 321: No such file or directory
cut: 7000: No such file or directory
(并且每行的每个单词依次)。我做错了吗?
在每行错误列表之后,我得到line 5: 1000]: No such file or directory
答案 0 :(得分:2)
使用awk
:
awk '$NF<1000' file.txt
$NF
是最后一个字段的值,$NF<1000
检查该值是否小于1000,如果是,则打印该行。
将输出保存在另一个文件中,例如out.txt
:
awk '$NF<1000' file.txt >out.txt
示例:强>
% cat file.txt
apples asd 45 321 7000
oranges gl 78 102 850
some ltd 83 15 500
other nova 80 50 3500
stuff 600 65 115 450
% awk '$NF<1000' file.txt
oranges gl 78 102 850
some ltd 83 15 500
stuff 600 65 115 450