sed substitution avec des variables bash
Essayer de modifier les valeurs dans un fichier texte à l'aide de 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. Je ne sais pas pourquoi ça ne fonctionne pas. Des suggestions?
Vous devez vous connecter pour publier un commentaire.
Variables à l'intérieur de
'
n'obtenez pas remplacé, dans bash. Pour obtenir de substitution de chaîne (ou interpolation, si vous êtes familier avec perl), vous auriez besoin de le modifier, de l'utilisation des guillemets"
à la place des apostrophes:Pour En Savoir Plus:
s
mais vous pouvez utiliser n'importe quel caractère de ponctuation;sed "s%draw($prev_number;n_)%draw($number;n_)%g" file.txt
ous#from#to#g
ous_from_to_g
etc.changelogEscaped=$(sed -e 's%\/%\\/%g; $!a\'$'\n''\\n' <<<"$changelog" | tr -d '\n')
Merci pour le lien ci-dessus.variables à l'intérieur des guillemets simples ne sont pas développés, à l'intérieur des guillemets, ils sont, d'utiliser des guillemets dans ce cas.
Vous pouvez également le faire fonctionner avec
eval
, mais ne pas le faire!!serait-ce de travailler?
Vous pouvez utiliser des variables comme ci-dessous. Comme ici, j'ai voulu remplacer
hostname
c'est à dire, le système de variable dans le fichier. Je suis à la recherche de chaîne delook.me
et remplacer l'ensemble de la ligne aveclook.me=<system_name>
Vous pouvez également stocker votre système de valeur d'une autre variable et peut utiliser cette variable de substitution.
host_var=
`hostname`sed -i "s/.*look.me.*/look.me=$host_var/"
Fichier d'entrée :
De sortie de fichier (en supposant que mon nom de système est
prod-cfm-frontend-1-usa-central-1
) :