【问题标题】:How to replace special characters in a string using sed command in bash [duplicate]如何在bash中使用sed命令替换字符串中的特殊字符[重复]
【发布时间】:2021-08-12 12:03:00
【问题描述】:

我将一个值作为参数传递给 .sh 文件(该文件包含以下内容)。

ESCAPED_REPLACE=$(printf '%s\n' "$1" | sed -e 's+$+\\$+g; s+(+\\(+g; s+"+\\"+g')
echo $ESCAPED_REPLACE

我基本上想用\$替换每个$,用\(替换每个(

如果我通过Ver$ify

./code.sh "Ver$ify"

我正在打印 Ver\$ 应该是 Ver\$ify 有人知道原因吗?

【问题讨论】:

标签: bash sed quotes


【解决方案1】:

研究单引号和双引号的区别,见https://shellcheck.net,重读一本很好的shell脚本介绍。

你没有传递Ver$ify,你传递的是Ver,结果是ify变量。使用单引号。

./code.sh 'Ver$ify'

我基本上想用\$ 和每个 ( 替换\(

sed 's/[$(]/\\&/g'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 2019-10-14
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多