73 votes

substitution sed avec des variables Bash

J'essaie de modifier les valeurs dans un fichier texte en utilisant sed dans un script Bash avec la ligne,

 sed 's/draw($prev_number;n_)/draw($number;n_)/g' file.txt > tmp

Ce sera dans une boucle for Pourquoi ça ne marche pas ?

14voto

Paul Creasey Points 15663

Les variables entre guillemets simples ne sont pas développées, mais elles le sont entre guillemets doubles. Utilisez des guillemets doubles dans ce cas.

 sed "s/draw($prev_number;n_)/draw($number;n_)/g" file.txt > tmp

Vous pouvez également le faire fonctionner avec eval , mais ne faites pas ça !!

5voto

Kent Points 71470

Cela peut aider :

 sed "s/draw($prev_number;n_)/draw($number;n_)/g" 

1voto

James Green Points 61

J'avais besoin de saisir les balises github de ma version dans les actions github. Ainsi, lors de la sortie, il sera automatiquement empaqueté et envoyé le code à l'artefact.

Voici comment j'ai procédé. :)

   - name: Invoke build
    run: |
      # Gets the Tag number from the release
      TAGNUMBER=$(echo $GITHUB_REF | cut -d / -f 3)
      
      # Setups a string to be used by sed
      FINDANDREPLACE='s/${GITHUBACTIONSTAG}/'$(echo $TAGNUMBER)/
      
      # Updates the setup.cfg file within version number
      sed -i $FINDANDREPLACE setup.cfg
      
      # Installs prerequisites and pushes 
      pip install -r requirements-dev.txt
      invoke build

Rétrospectivement, j'aurais aimé faire cela en python avec des tests. Cependant, c'était amusant de faire un peu de bash.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X