3

如果存在,我需要选择性地去除下划线。

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
4

3 回答 3

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选项。从手册页

-r, --regexp-extended
    use extended regular expressions in the script.
于 2012-05-10T12:35:02.423 回答
1

检查这是否有帮助。

 sed -e 's/\(VIEW \)V[_X]\+\(ABC\)/\1 \2/'
testing
testing
VIEW VXABC
VIEW  ABC
VIEW V_XABC
VIEW  ABC
于 2012-05-10T12:36:53.657 回答
0

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

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

从手册页sed

-E, -r, --regexp-扩展

在脚本中使用扩展的正则表达式(为了便于移植,使用 POSIX -E)

于 2012-05-10T04:28:43.413 回答