yamlpath tools

630阅读 0评论2022-01-16 zenith518
分类:Windows平台

yamlpath 相关工具集
地址: github.com/wwkimball/yamlpath
记录一下,yaml-paths 在windows中的用法和技巧。
问题和解决方法:
由于windows cmd和linux之间差异性的特殊问题,导致linux中能正常使用,但在cmd中就会遇到问题,主要是由于对特殊字符定义不同而引发的。
cmd中 ^为特殊字符,因此,如果要输入^字面含义,作为输入参数,必须double一下,这点和linux terminal是完全不同的表达方式(linux中使用`\`字符)。

比如, 要匹配以m字母开头的yaml关键字段,需要double^, 以便escape cmd的转义。

点击(此处)折叠或打开

  1. yaml-paths --expand --keyname -s ^^m test.yaml
输出结果为:

点击(此处)折叠或打开

  1. test.yaml/0: machine
  2. test.yaml/0: max_runtime

另外,还有比较混淆的%,在这里确能正常表达

点击(此处)折叠或打开

  1. yaml-paths --expand --keyname -s %in test.yaml
输出结果为:
点击(此处)折叠或打开
  1. test.yaml/0: machine
  2. test.yaml/0: input[0].destination
  3. test.yaml/0: input[0].source
  4. test.yaml/0: input[1].destination
  5. test.yaml/0: input[1].source

yaml-paths 同时还提供了一种更通用的方式,=~,使用正则表达式进行字段路径的自由匹配。
但是需要将正则表达模板放在特定分界符中,一般为 `/`, 这个和vim中输入的search方式有点类似。
例子:
另外,如果需要遍历整个yaml文件,输出所有yaml路径表达,可以用如下方式:
点击(此处)折叠或打开
  1. yaml-paths --expand --keyname -s =~/.*/ test.yaml
输出结果为:

点击(此处)折叠或打开

  1. test.yaml/0: machine
  2. test.yaml/0: env
  3. test.yaml/0: input[0].destination
  4. test.yaml/0: input[0].source
  5. test.yaml/0: input[1].destination
  6. test.yaml/0: input[1].source
  7. test.yaml/0: description
  8. test.yaml/0: max_runtime
  9. test.yaml/0: command

2022-01-16
zenith


上一篇:Excel原生公式实现的cut函数
下一篇:Awk 编译器