linux csv文件中某列的Grep值[已关闭]

olhwl3o2  于 2023-01-20  发布在  Linux
关注(0)|答案(2)|浏览(150)

3天前关闭。
Improve this question
如何使用grep在特定列中搜索字符串?
示例:

Name   age  place
Shruti 18   Delhi
Kiran  22   Chandigarh

我要搜索显示所有包含昌迪加尔字符串的行的位置列

7xllpg7q

7xllpg7q1#

使用GNU Grep您可以

$ grep -P '^(([^\t]*)\t){2}Chandigarh' blah.tsv 
Kiran   22  Chandigarh

-P指定perl风格的正则表达式,然后^是行的开始,([\t]*)是0或更多的不是制表符的任何值(因此,任何列值),因此(([^\t]*)\t)是后跟制表符的任何列值,最后{2}表示我们需要其中的2个,因此将Chandigarh放在第三列。

csga3l58

csga3l582#

mawk '!+__ { for(_ = NF;_;_--) { if (__ == $_) {
                 __ = _; next } } } ___ == $__' __='place' ___='Chandigarh'
Kiran  22   Chandigarh
  • 第一部分扫描标题行以查找匹配的列名"place"
  • 第2部分对"Chandigarh"执行普通的区分大小写的全列字符串匹配

相关问题