gpt4 book ai didi

xml - 如何在 xmlstarlet 的 concat 中打印换行符

转载 作者:行者123 更新时间:2023-12-03 16:15:22 30 4
gpt4 key购买 nike

我想用换行符分隔我的输出,所以我尝试了:

xmlstarlet sel -t -m "//node01" -v 'concat(@title,"\n",script/code)' -n input.xml

但是,打印的是“\n”字面值,并且输出在同一行。如何在 concat() 函数中强制换行?

示例 input.xml 是:

<test>
<aaa>This is a test</aaa>
<node01 title="howdy">
<script>
<code>function idoit() {
console.log("hello world");
}
</code>
</script>
</node01>
</test>

当我运行时,输出是:

howdy\nfunction idoit() {
console.log("hello world");
}

最佳答案

您可以在参数中给出文字换行符,其语法是特定于 shell 的。

  • 这应该适用于任何 POSIX sh:

    xmlstarlet sel -t -m "//node01" -v 'concat(@title,"
    ",script/code)' -n input.xml
  • 在 bash 中,您可以使用 $'ANSI C Quoting' :

    xmlstarlet sel -t -m "//node01" -v $'concat(@title,"\n",script/code)' -n input.xml

另一个不是特定于 shell 的技巧是设置一个 XPATH 变量并将换行符作为值:

xmlstarlet sel -t --var nl -n -b -m "//node01" -v 'concat(@title,$nl,script/code)' -n input.xml

关于xml - 如何在 xmlstarlet 的 concat 中打印换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42728243/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com