【问题标题】:How To Replace Exact Match words in Shell Script?如何在 Shell 脚本中替换完全匹配的单词?
【发布时间】:2017-05-05 05:26:21
【问题描述】:

我只是想替换 shell 脚本中的一些预定义字符串:

字符串是这样的:

 #! /bin/bash
 CONTENT="DEAR [NAME]"

我想将 [NAME] 替换为 John。 我使用了以下代码:

#! /bin/bash
CONTENT="DEAR [NAME]"
echo "$CONTENT" | sed -r 's/[[NAME]]+/John/g'

得到以下结果; 亲爱的[南俊

我需要像“DEAR Jhon”这样的结果。

【问题讨论】:

    标签: shell sed sh


    【解决方案1】:

    你必须逃避[]s:

    $ echo $CONTENT | sed 's/\[NAME\]/John/'
    DEAR John
    

    但对于这种情况,您只能使用 bash:

    $ echo ${CONTENT/\[NAME\]/John}
    DEAR John
    

    【讨论】:

    • 我还需要一个帮助;假设 [NAME] 在字符串中是两次,我想替换两者,在这种情况下,上面的代码只替换第一次出现的 [NAME]。
    • 对于sed,在末尾添加gsed 's/\[NAME\]/John/g'。我需要检查 bash。
    • 对于 bash,它是:echo ${CONTENT//\[NAME\]/John}(两个 //s 开头)。 (This供参考)
    • 谢谢詹姆斯布朗。
    【解决方案2】:

    使用转义序列。

    #! /bin/bash
    CONTENT="DEAR [NAME]"
    echo "$CONTENT" | sed 's/\[NAME\]/John/g'
    

    输出为

    亲爱的约翰

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多