如何使用grep在一个字段上搜索子字符串?

时间:2016-10-08 01:23:40

标签: linux bash grep

假设我有一个csv文件:

31,32,19,James Walker,321,James
21,31,49,Harry Bosh,282,Harry
32,12,03,Chris James,291,Chris

如何使用grep而不是awk来搜索" James"在第四场?

4 个答案:

答案 0 :(得分:3)

如何做到这一点是通过确保你的正则表达式需要在主模式之前出现三个逗号,并且模式(必须在字段内扫描)本身不匹配逗号,这将导致它匹配到第五个或更晚的领域:

grep -E '^([^,]*,){3}[^,]*James'

“从行的开头匹配三个重复的零或多个非逗号后跟一个逗号。这将我们带到第四个字段。在第四个字段中,匹配零或多个非逗号,然后James。“

答案 1 :(得分:-1)

你想要什么结果?

cat filename |grep "James" 

无法满足您的要求吗?

答案 2 :(得分:-1)

grep -P --color '(?<=,)James(?= +)' file
31,32,19,**James** Walker,321,James
grep -oP '(?<=,)James(?= +)' file 
James

答案 3 :(得分:-1)

谢谢你们!我首先完成对cut文件的操作以提取我想要的字段,然后grep我想要的字符串。 供参考:

cut -d -f4 name.csv | grep 'James"