繁体   English   中英

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

[英]How can I search a substring on one field by using 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”的出现?

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

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

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

你想要什么结果?

cat filename |grep "James" 

不能满足你的要求?

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

多谢你们! 我最终确定操作以首先cut文件以提取我想要的字段然后grep我想要的字符串。 供参考:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM