[Linux] sed grep ou awk - remplace ment de chaine de caracteres

Daniel Huhardeaux daniel.huhardeaux@::1
Ven 18 Oct 17:30:25 CEST 2024


Le 18/10/2024 à 17:05, Marc Chantreux a écrit :
> sed -E '/Repere:/,$s/(^ *commande: )truc1/\1trucWOW/ ' <<%

Non, pas tout à fait. Exemple concret:

go2rtc:
   ffmpeg:
     mycodec: -codec:v libx264 -g:v 1 -preset:v superfast -tune:v 
zerolatency -profile:v
       main -level:v 4.1
streams:
Tere4:
ffmpeg:http://user:pwd@192.168.1.161/videostream.cgi?rate=11#video=mycodec

camera:
   Terek4:
     enabled:  true
     ffmpeg:
       inputs:
         - path: rtsp://localhost:8554/Terek4
           input_args: preset-rtsp-restream
           roles:
             - detect
             - rtmp
             - record
     detect:
       width: 2560
       height: 1920
     objects:
       track:
         - person
     birdseye:
       enabled:  true
       order: 10

Je veux changer le true en false afin d'obtenir
   Terek4:
      enabled: false

sed -E ' /Terek4:/,$s/(^ *enabled: )/\1\ false/' config.yml

mais j'obtiens

   Terek4:
     enabled:  falsefalse

et aussi plus loin

     birdseye:
       enabled:  falsefalse
       order: 10

En clair: il ne remplace pas mais rajoute et ne s'arrête pas après 
l'opération puisque le enabled suivant (et je suppose les autres) est 
également traité alors qu'ils ne sont pas précédés du Repère, ici Terek4

Encore un petit effort, tu es sur la bonne voie ;) Merci pour ce début 
de solution.

-- 
Daniel
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://strasbourg.linuxfr.org/pipermail/linux/attachments/20241018/e301e047/attachment.htm>


Plus d'informations sur la liste de diffusion linux