Bash 获取并处理每行的最后一个单词,同时在文本行中循环
假设我得到了这个数据文件:Bash 获取并处理每行的最后一个单词,同时在文本行中循环,bash,Bash,假设我得到了这个数据文件: 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,如果小于,则将其输出到另一
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
(并按顺序为每行的每个单词)。我剪错了吗
在每行错误列表之后,我得到第5行:1000]:没有这样的文件或目录
awk '$NF<1000' file.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
%cat file.txt
苹果asd 45 321 7000
橙子gl 78 102 850
someltd 83 15 500
其他新星80 50 3500
材料600 65 115 450
%awk'$nfcut
的参数是一个文件名,而不是要处理的字符串。您需要通过管道将字符串传输到cut
。您还需要学习基本的shell语法<代码>如果[$PRICE<1000]
应该是如果[$PRICE-lt 1000]
。你需要在[
和]
周围留出空格,你必须使用-lt
,因为LOL,这比我编写整个脚本的方法简单和快速9999倍!知道命令的力量…@Milkncookiez是的awk
是任何字段分隔数据的转到工具。
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