正则表达式替换可选的下划线

时间:2012-05-10 04:22:09

标签: regex linux shell

如果存在下划线,我需要选择下划线。

string VIEW VXABC expected result VIEW ABC
string VIEW V_XABC expected result VIEW ABC

这是我的尝试,但结果让我不知道

echo "VIEW VXABC" |sed 's/VIEW V_?X/VIEW ABC/'
VIEW VXABC

3 个答案:

答案 0 :(得分:3)

[me@home]$ echo VIEW V_XABC | sed -r 's/VIEW V_?X/VIEW /' 
VIEW ABC
[me@home]$ echo VIEW VXABC | sed -r 's/VIEW V_?X/VIEW /' 
VIEW ABC

请注意-r选项。来自man page

-r, --regexp-extended
    use extended regular expressions in the script.

答案 1 :(得分:0)

尝试使用“扩展正则表达式”开关-E

echo "VIEW VXABC" | sed -E 's/VIEW V_?X/VIEW ABC/'

来自sed的手册页:

  

-E,-r, - rengexp-extended

     

在脚本中使用扩展正则表达式(用于可移植性)   POSIX -E)

答案 2 :(得分:0)

检查这是否有帮助。

 sed -e 's/\(VIEW \)V[_X]\+\(ABC\)/\1 \2/'
testing
testing
VIEW VXABC
VIEW  ABC
VIEW V_XABC
VIEW  ABC