【问题标题】:How to parse a YAML file with value present in multiple lines如何解析多行中存在值的 YAML 文件
【发布时间】:2020-08-18 10:46:30
【问题描述】:

我有一个以下格式的 YAML 文件,其中一些值跨越多行。

key1: value1
key2: description\
    \ description followed in next line \n
    \ Another line of string

我正在使用 grep 命令“grep '^key1'”和“grep '^key2'”来捕获键的值,但对于多行值,仅捕获第一行。有什么方法可以从 YAML 文件中捕获多行值。

谢谢

【问题讨论】:

  • 使用yq 或其他支持YAML 的工具,而不是grep

标签: linux shell


【解决方案1】:

正如 Shawn 所建议的,您应该考虑使用像 yq 这样的 yaml 解析器。 Python 有一个 YAML 解析模块。如果你很绝望,你可以试试这个代码:

$ FILE=sandeep.yaml  ; KEY=key2 ; VALUE=$( python3 -c "from  yaml import load; f = open('$FILE'); y = load(f) ; print( y['$KEY'] )")

$ echo $VALUE
description\ \ description followed in next line \n \ Another line of string

以上代码需要 yaml 模块存在于您的系统中。您可能需要调用此命令才能使上述代码正常工作:

pip3 install PyYaml

【讨论】:

    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 2011-04-22
    • 2010-12-18
    • 2017-06-03
    • 2021-11-04
    • 2022-12-22
    • 2021-12-31
    相关资源
    最近更新 更多