[Linux] sed grep ou awk - remplace ment de chaine de caracteres
Marc Chantreux
mc@::1
Sam 19 Oct 14:20:41 CEST 2024
> J'ai compris. Cependant je me suis rendu compte que le : de enabled
> disparait et que si je fais
> search && $1 ~ / *enabled/{ $2=": true" ; search=0 }
> le résultat devient enabled : true (espace entre enabled et le :) Je ne
> pense pas que yaml accepte cela.
indeed: ce dont on a besoin c'est
awk '
BEGIN { # avant de lire quoi que ce soit
# output field separator =
# field separator = ":"
OFS=FS=": "
}
$1 ~ / *Terek4$/ { search= 1 }
search && $1 ~ / *enabled$/ { $2 = "true" ; search=0 }
1
' config.yml
le begin peut disparaitre comme suit
awk -F': ' -vOFS=': ' '
$1 ~ / *Terek4$/ { search= 1 }
search && $1 ~ / *enabled$/ { $2 = "true" ; search=0 }
1
' config.yml
tu peux aussi set key et value au passage
yamlawk() awk -F': ' -vOFS=': ' -vkey=1 -vvalue=2 "$@"
< config.yaml yamlawk '
$key ~ / *Terek4$/ { search= 1 }
search && $key ~ / *enabled$/ { $value = "true" ; search=0 }
1
'
exercice: comment faire en sorte que le changement ne soit effectué
qu'une fois dans le cas de
Terek4:
enabled: wow
Terek4:
enabled: wow
a+
marc
Plus d'informations sur la liste de diffusion linux