ДМИ*_*КОВ 21
如果问题是"如何仅打印与特定正则表达式匹配的子字符串sed
?" 那么实现起来真的很难(而不是一个明显的解决方案).
grep
在这种情况下可能会更有帮助.该-o
选项在单独的行上打印每个匹配的部分,-P
启用PCRE正则表达式语法:
$> echo "a b _c d _e f" | grep -o -P "(\ *_[a-z]+)"
_c
_e
Run Code Online (Sandbox Code Playgroud)
最后
$> echo `echo "a b _c d _e f" | grep -o -P "(\ *_[a-z]+)"`
_c _e
Run Code Online (Sandbox Code Playgroud)
确定所需的模式,将其包围在不需要的模式中,并仅发出那些模式:
echo "a b _c d _e f" | sed 's/[^_]*\s*\(_[a-z]\)[^_]*/\1 /g'
Run Code Online (Sandbox Code Playgroud)
输出:
_c _e
Run Code Online (Sandbox Code Playgroud)