Eu tenho um arquivo:
- 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: []
Eu tenho que substituir cada um <*description>
por algum texto. Obviamente, pensei em usar regex. Aparentemente (de acordo com algumas respostas neste site), sed
não possui um modificador não ganancioso para substituições. Assim, tentei usar o perl:
(.*id: 1\.4\.25\.2(?:\n|.)*)\'(\<\*description\>)\'
não seleciona a parte necessária, que seria de - id: 1.4.25.2
till description: '<*description>'\ncontent: []
, logo antes do próximo elemento na matriz yaml, ou seja, antes da linha - id: 1.4.25.3
. Não consigo descobrir uma maneira de fazer isso e como poderia alterar a descrição de cada entrada no arquivo com um texto personalizado retirado de outro lugar!
Use um módulo YAML; recurse pela estrutura de dados e substitua quaisquer elementos correspondentes aqui por linhas lidas na entrada padrão.
o acima salvo como
parser
e com YAML válido eminput
: