正则表达式在 grep 中未按预期工作

正则表达式在 grep 中未按预期工作

我的问题是关于正则表达式的。感谢regexr,我设法写出一个表达式与 linux 命令给我的接口名称匹配route

但我无法抓住它:

route | grep -Eo "(?:((\w|\.|\*)+\s+)){7}([^ .]+[0-9]+)$"

这是为什么?

答案1

不同的程序(以及该程序的不同版本)可能使用不同的正则表达式实现。尝试逐部分减少或分解正则表达式,以了解哪些功能受支持/不受支持。

例如,我需要删除非捕获组说明符?:,以便我的GNU grep可以在 Solaris 11 中按预期运行。

或者你可以尝试替换-E-P使用Perl 正则表达式引擎对我来说,这让我GNU grep无需进一步修改即可运行你的正则表达式。

route | grep -Po "(?:((\w|\.|\*)+\s+)){7}([^ .]+[0-9]+)$"

笔记: GNU grep在 Solaris 11 中位于/usr/gnu/bin/grep

相关内容