Com*_*low 3 unix linux bash shell awk
我有一个像这样的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
Run Code Online (Sandbox Code Playgroud)
如何打印VENDOR和PRICE IFF ITEM是Pizza?
我试过grep但它很慢.
我可以像这样写一个python代码,
for line in file:
fields = line.split('|')
if fields[2] == 'Pizza':
print fields[0], fields[-1]
Run Code Online (Sandbox Code Playgroud)
但我想从shell本身在Awk中做到这一点.我该怎么做呢?
更新
我如何检查子串?
我想输出VENDOR,PRICE如果披萨发生ITEM?
输出应该是:
33|36
3|55
5|33
6|44
Run Code Online (Sandbox Code Playgroud)
fed*_*qui 11
这使它:
$ awk -F\| '$3=="Pizza" {print $1,$4}' file
33 36
3 55
Run Code Online (Sandbox Code Playgroud)
-F\|设置|为字段分隔符.$3=="Pizza" 检查第3个字段是否为"Pizza".{print $1,$4} 打印第1和第4个字段.我想输出
VENDOR,PRICE如果披萨发生ITEM?
$ awk 'BEGIN{OFS=FS="|"} $3~/Pizza/ {print $1,$4}' file
33|36
3|55
5|33
6|44
Run Code Online (Sandbox Code Playgroud)
$3~/Pizza/检查"发生",以及$3=="Pizza检查完全匹配.BEGIN{OFS=FS="|"}将(输入和输出)字段分隔符设置为|.