如何使用grep命令提取文件中指定匹配模式后面的目标字符串
问题原因
你使用的原有命令 grep -oP '(?<=yellow_y).*' 会匹配到yellow_y之后整行的所有内容,包含关键词后方的多个空格、目标字符串acc以及行尾的反斜杠,无法得到你想要的结果。
可行解法
方法1:调整GNU grep正则参数
如果你使用的是支持-P参数的GNU grep(大部分Linux发行版默认自带),修改正则即可:
grep -oP '(?<=yellow_y\s*)\w+' 你的目标文件名
说明:
\s*匹配yellow_y后面的任意数量空白字符\w+匹配后续连续的非空白字符串,刚好提取到acc
方法2:使用awk(兼容性更强)
如果环境没有GNU grep(比如macOS默认环境),用awk实现更简单,不需要考虑正则预查兼容性:
awk '/yellow_y/{print $2}' 你的目标文件名
说明:awk默认按任意空白分割字段,匹配到包含yellow_y的行后直接输出第二个字段,就能直接得到acc。
内容的提问来源于stack exchange,提问作者Blurman
相关产品推荐
相关产品推荐

