Sed

Résolu
dino -  
 dino -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

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

    fichier* est à remplacer par le terme adéquat (expansion comprise).
    0
  2. dino
     
    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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
  3. dino
     
    Oui tout mes fichiers sont dans le meme rep. et mon petit script aussi.
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dino
     
    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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Quel système d'exploitation ? Unix ou Linux ?

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

    Pour la version du sed je ne peux pas te dire.....
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  9. dino
     
    Bonjour,

    Merci beaucoup ca marche nickel !

    Bonne journée !
    0