amp*_*ent 2 sed regular-expression
使用[[:space:]]
看起来有点不优雅,坦率地说,对于sed
匹配模式,微软风格。我试图从“First Last”中提取“Last”,并且以下任一方法都有效:
echo "First Last" | sed s/First //
echo "First Last" | sed s/First\s//
Run Code Online (Sandbox Code Playgroud)
什么工作是
echo "First Last" | sed s/First[[:space:]]//
Run Code Online (Sandbox Code Playgroud)
我想知道:
sed
?[[:space:]]
适用于所有 Linux 发行版?是的,[:space:]
应该被所有sed
版本认可,它是POSIX定义的基本正则表达式的一部分。
该\s
符号来自 Perl Compatible Regular Extensions,它在许多程序(-P
例如grep with )和语言(perl、php、java、javascript、python...)中实现。这些正则表达式语法中的任何一种都与 Microsoft 无关!
如果你想要 PCRE 语法,为什么不使用 Perl?这两个工作:
echo "First Last" | perl -pe 's/First\s//'
echo "First Last" | perl -pe 's/First *//'
Run Code Online (Sandbox Code Playgroud)
该-p
标志的意思是在执行传递-e
给它的任何脚本后“打印每一行” 。