Ank*_*wal 9 regex linux bash grep
在Ubuntu 10.04上的bash 4.1.5(1)上的GNU grep 2.5.4
这匹配
$ echo "this is a line" | grep 'a[[:space:]]\+line'
this is a line
Run Code Online (Sandbox Code Playgroud)
但事实并非如此
$ echo "this is a line" | grep 'a\s\+line'
Run Code Online (Sandbox Code Playgroud)
但这也符合
$ echo "this is a line" | grep 'a\s\+\bline'
this is a line
Run Code Online (Sandbox Code Playgroud)
我不明白为什么#2不匹配(而#1确实如此)而#3也显示匹配.这有什么区别?
查看您的grep联机帮助页。Perl 添加了许多原始规范中没有的正则表达式扩展。然而,由于它们被证明非常有用,许多程序都采用了它们。
不幸的是,grep有时会陷入过去,因为您想确保您的grep命令与旧版本的grep.
有些系统有egrep一些扩展。其他允许您使用grep -E来获取它们。还有一些grep -P允许您使用 Perl 扩展。我相信Linux系统的grep命令可以使用-P大多数Unix系统中不可用的扩展,除非有人用GNU版本替换了grep。较新版本的 Mac OS X 也支持该-P切换,但较旧版本不支持。