【发布时间】:2020-10-04 19:00:16
【问题描述】:
我正在尝试使用 perl 将 yaml 字符串转换为 bash 中的 json(不幸的是它必须是这样的)并且遇到了问题。 当我将它写入一个临时文件并转换它时它可以工作,但不幸的是我没有足够的 perl 经验来改变它以使用 bash 变量来执行相同的操作。 我需要这样做,因为我想经常转换许多文件,并且总是创建临时文件很慢/效率低,在我的情况下也是一个安全问题。
这是处理临时文件的命令:
jsonfile=$(perl -MYAML::XS=LoadFile -MJSON::XS=encode_json -e 'for (@ARGV) { for (LoadFile($_)) { print encode_json($_),"\n" } }' ${tempfile} )
我可以以某种方式将其更改为类似的东西吗?
jsonfile=$(echo "${yaml_string}" | perl .....)
我稍微更改了参数并尝试了类似的方法,但输出完全不同且无法使用:
jsonfile=$(echo "${yaml_string}" | perl -MYAML::XS=Load -MJSON::XS=encode_json -e 'for (<>) { for (Load($_)) { print encode_json($_),"\n" } }')
我们将不胜感激。
【问题讨论】:
-
如果你安装了 JSON::XS 和 [YAML::XS,你可以使用 JSON::XS 在其发行版中引入的 [
json_xs命令行实用程序。无需自己动手:json_xs -f yaml -t json <input.yml从文件中读取 STDIN。其他答案给出的所有解决方案都适用于此,它只是减少了您的 Perl 代码。
标签: json bash perl yaml data-conversion