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
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
-
ModérateurSalut,
sed -is 's/ABC/DEF/g' fichier*
Où fichier* est à remplacer par le terme adéquat (expansion comprise).
-
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-
ModérateurTa 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).
-
-
Oui tout mes fichiers sont dans le meme rep. et mon petit script aussi.
-
ModérateurExemple 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]$
;-)) -
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 ...] -
C'est un Unix AIX :AIX 5300-09-02-0849
Pour la version du sed je ne peux pas te dire..... -
ModérateurOk, 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 ! -
Bonjour,
Merci beaucoup ca marche nickel !
Bonne journée !