如何使用AWK通过某列来获取文件中的行

And*_*say 3 unix bash awk grep

1|1001|399.00|123                                  
1|1001|29.99|234                                  
2|1002|98.00|345                                   
2|1002|29.98|456                                   
3|1003|399.00|567  
4|1004|234.56|456
Run Code Online (Sandbox Code Playgroud)

我如何使用awk在第2列中使用'1002'获取所有行?

如果我想在第一列中使用'2'获取所有行,我可以使用grep ^ 2,但如何使用不同的列进行搜索?

Wil*_*ell 6

典型的解决方案是:

awk '$2 == 1002' FS=\| input-file
Run Code Online (Sandbox Code Playgroud)

你会得到一个略有不同的结果: $2 ~ 1002在技​​术上满足你的查询,但可能不是你想要的.(它执行正则表达式匹配,因此如果第二列是"341002994"则匹配).