Android shell script grep



我试图写一个脚本使用Android shell(与Busybox)扫描一些。xml文件提取信息,然而,我被困在一些优化。

不应该,例如,

(ax)b

axbxc

不;当我尝试在Android(4.2.2,与Busybox 1.20.2,如果它有关系?)上执行此操作时。

echo axbxc > sdcardtest.txt
grep "(ax)b" sdcardtest.txt

不返回任何值,而

grep "axb" sdcardtest.txt

返回

axbxc

同样,不该

(?>ax)b

return axbxc ?(这是我想要应用的实际优化)

是什么导致了这个问题?另外,有没有人知道Busybox使用的是什么正则表达式引擎,这样我就可以专门研究一下了?

要在grep(和busybox grep)中启用扩展正则表达式,您需要使用grep -Eegrep (egrepgrep -E的快捷方式)。

我已经用busybox grep测试过了,这两种方法都像预期的那样工作,并且匹配你的正则表达式。

至于(?>ax)b—只有当您可以使用grep -P(支持Perl兼容的正则表达式)时,这才会起作用。但是,busybox grep不支持此开关,因此向前查找和向后查找匹配将无法工作。

最新更新