• # .

    Posté par . En réponse au message [sed] Remplacer du texte contenu dans une variable et contenant des () et *. Évalué à 2. Dernière modification le 21 mai 2017 à 06:29.

    Il faut échapper les caractères spéciaux des expressions régulières basiques : '[', '*', '^' et '$' ainsi que le caractère d'échappement lui-même et le caractère qui sépare les arguments de la commande de substitution.

    Une solution utilisant Awk et qui ne requiert par d'échappements :

    awk -F: -vOFS=:\
     -vparam_a_modifier="$param_a_modifier" \
     -vancienne_valeur="$ancienne_valeur" \
     -vnouvelle_valeur="$nouvelle_valeur" \
     '1ドル == param_a_modifier && 2ドル == ancienne_valeur {2ドル = nouvelle_valeur} 1'
    

    Remarquez le 1 à la fin de la commande qui assure que toutes les lignes seront imprimées.

    edit: ironiquement, j'ai du échapper le ^ dans le commentaire ^^
    edit2: ne pas oublier de déclarer ':' aussi comme séparateur de champs à la sortie (OFS)