请问grep和正则表达式能不能只显示找到的匹配此表达式的字符? 10
比如要找A_*_Z的话只显示A_KKK_Z,A_KDJF_Z等,或者各个匹配的字符串之间用逗号分开?...
比如要找A_*_Z的话只显示A_KKK_Z,A_KDJF_Z等,或者各个匹配的字符串之间用逗号分开?
展开
1个回答
展开全部
grep可以,加上参数-o,其可用的最好的正则表达式引擎是perl风格的,需要在命令行加参数-P
笼统地说正则表达式没有意义,不同的语言利用正则表达式完成匹配后,想输出什么,和正则表达式已经没有关系了,完全看程序的逻辑,grep加上-o参数其实就是实现了“输出匹配”的逻辑。
如你的例子,假设内容存在test.txt中,则
grep -P -o "A_[^\sZ_]*_Z" test.txt
如果只要中间的,不要A_和_Z,则
grep -P -o "(?<=A_)[^\sZ_]*(?=_Z)" test.txt
笼统地说正则表达式没有意义,不同的语言利用正则表达式完成匹配后,想输出什么,和正则表达式已经没有关系了,完全看程序的逻辑,grep加上-o参数其实就是实现了“输出匹配”的逻辑。
如你的例子,假设内容存在test.txt中,则
grep -P -o "A_[^\sZ_]*_Z" test.txt
如果只要中间的,不要A_和_Z,则
grep -P -o "(?<=A_)[^\sZ_]*(?=_Z)" test.txt
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询