我有一个文件:
- id: 1.4.25.2
name: 'Configuring a VNC Server'
permalink: '/rhcsa/managing-network-services/configuring-vnc-access/configuring-a-vnc-server'
description: '<*description>'
content: []
- id: 1.4.25.3
name: 'Connecting to a VNC Server'
permalink: '/rhcsa/managing-network-services/configuring-vnc-access/connecting-to-a-vnc-server'
description: '<*description>'
content: []
我必须<*description>
用一些文本替换每个。显然,我想到了使用正则表达式。显然(根据本网站上的某些答案),sed
没有用于替换的非贪婪修饰符。因此,我尝试使用 perl:
(.*id: 1\.4\.25\.2(?:\n|.)*)\'(\<\*description\>)\'
没有选择所需的部分,即 from - id: 1.4.25.2
till description: '<*description>'\ncontent: []
,就在 yaml 数组中的下一个元素之前,即在 line 之前- id: 1.4.25.3
。我想不出一种方法来做到这一点,以及如何使用从其他地方提取的自定义文本来更改文件中每个条目的描述!
使用 YAML 模块;递归遍历数据结构,并将此处的任何匹配元素替换为在标准输入中读入的行。
以上内容保存为
parser
有效的 YAML 并保存在input
: