代码之家  ›  专栏  ›  技术社区  ›  jhon.smith

在Unix Shell中用反斜杠和特殊字符替换所有特殊字符

  •  0
  • jhon.smith  · 技术社区  · 5 年前

    这个问题已经有了答案:

    我需要用字符串中的反斜杠替换不是字母数字的特殊字符。

    在巴什我该怎么做?我的版本是4.1

    我可以使用以下正则表达式捕获特殊字符加号

    ([^[:alnum:]])
    

    例如,应用于字符串

    Alan5+6imson
    

    我能做到

    $ echo $orig_str |sed 's/([^[:alnum:]])/\\1/g'
    Alan5+6imson
    

    我需要输出

    Alan5\+6imson
    

    如何在Bash中替换它?

    我试过上面的正则表达式,但不知道如何执行替换。

    我需要用别的工具吗 sed ?

    1 回复  |  直到 5 年前
        1
  •  1
  •   tshiono    5 年前

    请你试试:

    echo "$orig_str" | sed 's/\([^[:alnum:]]\)/\\\1/g'
    

    或:

    echo "$orig_str" | sed 's/[^[:alnum:]]/\\&/g'