【问题标题】:Replacing string with variable with Groovy and SED command用 Groovy 和 SED 命令用变量替换字符串
【发布时间】:2023-03-27 23:05:01
【问题描述】:

我正在尝试替换 XML 文件中包含的整个描述字符串。我想用一个变量替换那个字符串。我在 Groovy 脚本中使用 SED 命令。

我有以下代码。我期待字符串“foo”替换描述文本,但事实并非如此。 相反,以下行导致 XML 更改为: Description="sDescription"

我做错了什么?

def sDescription = "foo"
def sedCommand = 'sed -i \'s/Description="[^"]*"/Description="'$sDescription'"/g\'  package.appxmanifest' as String

【问题讨论】:

  • 为什么不用 groovy 出色的 XML 解析和操作来代替它呢?

标签: linux bash shell groovy sed


【解决方案1】:

在 Groovy 中,字符串内的变量/表达式替换(插值)仅适用于某些类型的字符串文字语法。单引号语法 ('content') 不是其中之一。但是,如果您将外部单引号替换为双引号 ("content"),那么您应该得到您正在寻找的插值效果:

def sDescription = "foo"
def sedCommand = "sed -i 's/Description=\"[^\"]*\"/Description=\"$sDescription\"/g\'  package.appxmanifest" as String

这应该会为您提供包含您希望运行的命令的字符串。请注意我如何更改字符串中的特殊字符转义 (\) 以反映字符串分隔符的更改。

旁白:正如@tim_yates 所说,当 Groovy 包含内置于语言?

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 2021-09-28
    • 1970-01-01
    • 2021-07-04
    相关资源
    最近更新 更多