Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Bash]Remplacer une chaîne dans un fichier

Avec awk ?

Sujet résolu
    18 novembre 2006 à 21:58:11

    Bonjour,

    J'ai un dossier contenant (directement ou indirectement) des fichiers dans lesquels je veux remplacer la chaîne '/opt' par '/usr/opt'. On m'a dit que c'était possible avec awk, mais je ne vois pas comment (je débute avec Bash).

    Je boucle chaque fichier régulier retourné par ls -R, et j'applique le awk à chacun ; j'arrive à récupérer les lignes correctes, mais je ne sais pas comment modifier la chaîne (les fichiers ne sont pas organisés de façon cohérente), ni comment l'insérer dans le fichier original.

    Comment rechercher et remplacer une chaîne dans un fichier ?


    Merci d'avance

    EDIT

    Résolu grâce à l'aide de bluestorm

    Script shell utilisé
    for file in fichiers_a_modifier
    do
            if
                    [ -f $file ] #on vérifie si c'est bien un fichier régulier
            then
                    cat $file | sed s/\\/opt/\\/usr\\/opt/g >> tmp.txt #Il faut deux \ pour échapper les caractères spéciaux
                    mv tmp.txt $file #Il vaut mieux utiliser un nom différent, comme $file.done, sauf si on est sûr que ça marchera du premier coup
            fi
    done


    Je mettrai le sujet en résolu quand je pourrai
    Merci encore à bluestorm
    • Partager sur Facebook
    • Partager sur Twitter
      19 novembre 2006 à 20:59:06

      (Juste pour marquer le sujet Résolu)
      • Partager sur Facebook
      • Partager sur Twitter

      [Bash]Remplacer une chaîne dans un fichier

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown