我有一个像这样的 laaaaaarge 文件:
VENDOR|QTY|ITEM|PRICE
2|3|Sugar|15
3|3|Coffee|35
4|244|Sugar2|55
33|2|Pizza|36
3|3|Pizza|55
5|5|Pizza2|33
6|6|Pizza3|44
如何打印VENDOR
和PRICE
IFF ITEM
为Pizza
?
我已经尝试了grep
,但速度很慢。
我可以像这样编写一个python代码,
for line in file:
fields = line.split('|')
if fields[2] == 'Pizza':
print fields[0], fields[-1]
但我想从shell本身的 Awk 中做到这一点。我该怎么做?
更新
我如何检查子串?
如果<{1}}中出现披萨,我想输出VENDOR
和PRICE
输出应为:
ITEM
答案 0 :(得分:11)
这就是:
$ awk -F\| '$3=="Pizza" {print $1,$4}' file
33 36
3 55
-F\|
将|
设置为字段分隔符。$3=="Pizza"
检查第3个字段是否为“Pizza”。{print $1,$4}
打印第1和第4个字段。如果<{1}}中出现披萨,我想输出
VENDOR
和PRICE
ITEM
$ awk 'BEGIN{OFS=FS="|"} $3~/Pizza/ {print $1,$4}' file
33|36
3|55
5|33
6|44
检查“发生”,以及$3~/Pizza/
检查完全匹配。$3=="Pizza
将(输入和输出)字段分隔符设置为BEGIN{OFS=FS="|"}
。