Sed

Résolu
Bonjour,

J'ai une liste de fichiers >300 ,je veux remplace un mot a l'interrieur de tous ces fichier par la commande sed

for i in listdeficier do

cat $i|sed "s/ABCD/DEF/g"

qlq a une idée ?

Merci
Configuration: Windows XP / Firefox 3.6

8 réponses

  1. Modérateur
    Salut,

    sed -is 's/ABC/DEF/g' fichier*

    fichier* est à remplacer par le terme adéquat (expansion comprise).
    0
    1. Merci pour ta reponse rapide !

      Mais voila ce que j'ai :

      set -vx
      for i in list.txt do

      cat $i|sed 's/ABC/DEF/g' $i
      done

      A l'execution j'ai :

      Syntax error at line 5 : `cat' is not expected.

      une idée ?

      Merci
      0
      1. Modérateur
        Ta liste de fichier est dans un fichier texte ?
        Lesdits fichiers (ceux de la liste) sont dans le même répertoire que le script ?

        Sinon ma commande est faite pour être lancée depuis un terminal (sans passer par un script et sans boucle) à conditions d'avoir un dénominateur commun aux fichiers à prendre en compte (par exemple *.txt).
        0
    2. Oui tout mes fichiers sont dans le meme rep. et mon petit script aussi.
      0
      1. Modérateur
        Exemple beaucoup plus parlant :

        [reptest]$ ls -1
        fichier1
        fichier2
        fichier3
        
        [reptest]$ cat fichier1
        Ligne 1 fchier1
        Ligne 2 fchier1
        Ligne 3 fchier1
        Ligne 4 fchier1
        Ligne 5 fchier1
        Ligne 6 fchier1
        Ligne 7 fchier1
        Ligne 8 fchier1
        Ligne 9 fchier1
        Ligne 10 fchier1
        
        [reptest]$ cat fichier2
        Ligne 1 fchier2
        Ligne 2 fchier2
        Ligne 3 fchier2
        Ligne 4 fchier2
        Ligne 5 fchier2
        Ligne 6 fchier2
        Ligne 7 fchier2
        Ligne 8 fchier2
        Ligne 9 fchier2
        Ligne 10 fchier2
        
        [reptest]$ cat fichier3
        Ligne 1 fchier3
        Ligne 2 fchier3
        Ligne 3 fchier3
        Ligne 4 fchier3
        Ligne 5 fchier3
        Ligne 6 fchier3
        Ligne 7 fchier3
        Ligne 8 fchier3
        Ligne 9 fchier3
        Ligne 10 fchier3
        
        [reptest]$ sed -is 's/Ligne 5/blablabla/' fich*
        
        [reptest]$ cat fichier1
        Ligne 1 fchier1
        Ligne 2 fchier1
        Ligne 3 fchier1
        Ligne 4 fchier1
        blablabla fchier1
        Ligne 6 fchier1
        Ligne 7 fchier1
        Ligne 8 fchier1
        Ligne 9 fchier1
        Ligne 10 fchier1
        
        [reptest]$ cat fichier2
        Ligne 1 fchier2
        Ligne 2 fchier2
        Ligne 3 fchier2
        Ligne 4 fchier2
        blablabla fchier2
        Ligne 6 fchier2
        Ligne 7 fchier2
        Ligne 8 fchier2
        Ligne 9 fchier2
        Ligne 10 fchier2
        
        [reptest]$ cat fichier3
        Ligne 1 fchier3
        Ligne 2 fchier3
        Ligne 3 fchier3
        Ligne 4 fchier3
        blablabla fchier3
        Ligne 6 fchier3
        Ligne 7 fchier3
        Ligne 8 fchier3
        Ligne 9 fchier3
        Ligne 10 fchier3
        
        [reptest]$

        ;-))
        0
        1. je l'ai executer telle qu'elle est sous mon chemin voila ce que j'ai eu :

          sed -is 's/ABCD/DEF/' *fichier
          sed: Not a recognized flag: i
          Usage: sed [-n] Script [File ...]
          sed [-n] [-e Script] ... [-f Script_file] ... [File ...]
          0
          1. Modérateur
            Quel système d'exploitation ? Unix ou Linux ?

            Quelle version de sed ?
            0
        2. C'est un Unix AIX :AIX 5300-09-02-0849

          Pour la version du sed je ne peux pas te dire.....
          0
          1. Modérateur
            Ok, donc effectivement il faudra passer par un script ;-\

            #! /bin/sh 
            
            #set -xv 
            
            cd /chemin/rep 
            for i in * 
            do  
            sed 's/ABC/DEF/g' "$i" > "tmp_$i" && mv "tmp_$i" "$i" 
            done


            $ man woman
            Il n'y a pas de page de manuel pour woman.

            GNU/Linux : Gnu/Linux is Not Ubuntu !
            0
            1. Bonjour,

              Merci beaucoup ca marche nickel !

              Bonne journée !
              0