bash - 如何使用AWK按某列抓取文件中的一行

标签 bash unix 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

我如何使用 awk 获取第 2 列中带有“1002”的所有行?

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

最佳答案

典型的解决方案是:

awk '$2 == 1002' FS=\| input-file

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

关于bash - 如何使用AWK按某列抓取文件中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15173042/

相关文章:

file - shell 每 n 行插入一行

awk - 如何使用 awk 从列表中获取特定列

bash - grep 内部工作(具有其他文件给出的值的行)?

Git:打开文本编辑器时权限被拒绝

git - 我如何知道我安装了哪些版本的 MinGW32 和 MinGW64(通过 Git Bash)?

linux - 如何在没有临时文件的情况下将一些文本附加到管道

linux - 将 shell 更改为 ksh 后缺少 gem

带有额外选项的 Linux select 语句

bash - 如何使用 grep 查找给定的字符串

regex - Grep 排除 curl 主体的注释 <!-- --> 之间的匹配出现次数