yaml 如下
name1:
- herry
- jack
name2:
- jack
- herry
name3:
- jack
- herry
需求:
- 希望把 name2 中的 herry 和 jack 对调下位置,这种有什么好的方式实现吗?
- name1 和 name2 的位置整体对调,有没有什么方式实现
yaml 如下
name1:
- herry
- jack
name2:
- jack
- herry
name3:
- jack
- herry
需求:
1
br_wang Nov 23, 2021
不如试下正则替换?
1. herry -> herry2 2. jack -> herry 3. herry2 -> jack |
2
asilin Nov 23, 2021
“1”的解决方案:sed -i '/name2:/{n; N; s/\([^\n]\+\)\n\(.*\)/\2\n\1/}' <文件名>
|
5
lanlanye Nov 23, 2021
文件不是特别多或者特别大的话,用 vim 录宏……
|
6
moshiyeap100 Nov 23, 2021
把 yml 读进来,然后代码里排序,重新生成。
|
7
quanjw Nov 23, 2021
dd p
|
8
arischow Nov 23, 2021 via iPhone
你所熟悉的语言的 yaml 库
|
9
XSG Nov 23, 2021
可以尝试一个开源小工具 yq
|
10
yEhwG10ZJa83067x Nov 24, 2021
@quanjw 详细说说。没看懂
|
12
zliea Nov 24, 2021
我觉得应该考虑一下 py ,py 做这种应该比较适合。
|
13
kidonng Nov 24, 2021 via Android
取决于这个任务的容错率多高。
如果目标数据就像你发的那么简单,sed 之类就行。 如果稍微复杂点的,还是用专门的 YAML 操作工具,TomWright/dasel 或者 9L 提到的 mikefarah/yq 都可以。 |