Chinaunix首页 | 论坛 | 博客
  • 博客访问: 426279
  • 博文数量: 101
  • 博客积分: 1547
  • 博客等级: 上尉
  • 技术积分: 1072
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-12 23:46
个人简介

music,code,dialog,rest

文章分类

全部博文(101)

文章存档

2023年(8)

2022年(25)

2021年(6)

2020年(2)

2019年(6)

2018年(4)

2017年(5)

2016年(20)

2015年(4)

2014年(2)

2013年(1)

2012年(1)

2011年(1)

2010年(1)

2009年(2)

2007年(10)

2006年(3)

分类: Windows平台

2022-01-16 09:07:59

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


阅读(527) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~