通过命令提示符显示输入文件中的特定项目名称和项目价格?

时间:2013-06-25 05:41:22

标签: awk gawk nawk

Chenna Black |1|76.00|Chenna
Chenna White big|1|102.00|Chenna
Chenna White small|1|82.00|Chenna
Dhal-Gram|1|78.00|Dhal
Dhal-Moong|1|76.00|Dhal
Dhal-Orid|1|72.00|Dhal
Dhal-Toor|1|68.00|Dhal
Dhal-Green gram|1|88.00|Dhal
Rajma-Black|1|72.00|Rajma
Rajma-Pink|1|80.00|Rajma
Rice-Basmanthi|1|80.00|Rice
Rice-Boiled|1|42.00|Rice
Rice-Idly|1|33.00|Rice
Rice-IGBasamanthi|1|99.00|Rice
Rice-Karanatka Ponni|1|38.00|Rice
Rice-Nirapara Silky|1|235.00|Rice
Rice-Raw|1|40.00|Rice
Rice-RoastedGram|1|100.00|Rice

是我的输入文件。假如我从输入文件中检查米饭项目。它也会显示米商品和米商品的价格。如果我从文件中写出不可用的商品,如“糖”商品。它将显示“未找到项目”。

3 个答案:

答案 0 :(得分:0)

awk -v item=Rice '$0 ~ item { i++; print }
                  END       { if (i == 0) print item " not found" }' data

如果您想要选定的字段,则必须确定每个字段包含的内容。 1大概是价格? (好的:不,这不太可能是价格,但你不应该指望我们在数据中划分列的含义; - 你应该告诉我们含义。)目前尚不清楚该项是否在现场1或4或两者。

这不是不区分大小写的 - 如果您想要不区分大小写,请阅读您的awk版本的手册;它可能是也可能是不可能的。

答案 1 :(得分:0)

awk -v item=Rice -F "|" "$0 ~ item {i++; total = total + $3}; END { 
if (i>0) print \"item name\",item,\"NO OF ITEMS\",i,\"total amount \",total; else print \"item not found\"}" datafile

输出答案:

item name Rice NO OF ITEMS 8 total amount 667

在我寻找米饭的节目中。之后搜索模式匹配表单输入文件。接下来我用来计算米饭的数量,总数用于所有米饭的总量。初始项是可变的,米是赋值给变量项的值。最后它显示项目,项目数,项目总数。

答案 2 :(得分:0)

您也可以在perl中执行此操作:

perl -F"|" -ane 'BEGIN{$f=0}if(/Rice/){print;$f=1}END{print "not found\n" unless($f)}' your_file