|
|
|
|
Bonjour,
je veux remplacer 2 chaines de caractéres(NUMMASTER et NUMSLAVE) par 2 autres dans une trentaines de fichiers "doris1.in" dans des sous répertoires différents, pour cela j ai écrit un script test.sh qui contient les commandes suivantes:
cd 19920505_19950901
vi doris1.in
:%s/NUMMASTER/19920505
:%s/NUMSLAVE/19950901
:wq
cd ../19920505_19971015
vi doris1.in
:%s/NUMMASTER/19920505
:%s/NUMSLAVE/19971015
:wq
.
.
.
. idem pour les trentaines de fichier
quand j excute mon script (./test.sh) cygwin m affiche les erreurs suivantes:
./test.sh line3:%s/NUMMASTER/19920505: No such file or directory
./test.sh line4:%s/NUMSLAVE/1995090: No such file or directory
./test.sh line5:wq : command not found
.
.
.
. idem pour les autres lignes
quelqu un peut m aider, ça me déprime ce probléme, 6h sans résultat, j ai cherché partt mais pas trouvé qrand chose
merci d avance
Configuration: Windows 2003 Firefox 2.0.0.9
Répondre à jipicy
|
Re-
find . -type f -name "doris1.in" -exec sed 's/NUMMASTER/19920505/;s/NUMSLAVE/19971015/' {} \;Si la sortie sur l'écran est satisfaisante, rajoute le switch "-i" à sed (sed -i 's/.../.../') pour une modification définitive. Bien évidemment ta version de "sed" doit être supérieure à 4.0.5 pour que le switch "-i" soit implémenté.
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Répondre à jipicy
|
Qu'on se comprenne bien, il faut affecter à chaque variable NUMMASTER et NUMSLAVE respectivement la valeur de part et d'autre de l'underscore de chaque sous-répertoire ?
|
Alors essaie ça : find . -type f -name "doris1.in" -exec sed '
s#NUMMASTER#basename $(dirname {})|cut -d_ -f1#e
s#NUMSLAVE#basename $(dirname {})|cut -d_ -f2#e
' {} \; À taper sur une seule ligne, sinon si tu dois le mettre dans un script :find . -type f -name "doris1.in" -exec sed '\
s#NUMMASTER#basename $(dirname {})|cut -d_ -f1#e\
s#NUMSLAVE#basename $(dirname {})|cut -d_ -f2#e\
' {} \; ;-))
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Oups ;-((
find . -type f -name "doris1.in" -exec sed 's#NUMMASTER#basename $(dirname {})|cut -d_ -f1#e ; s#NUMSLAVE#basename $(dirname {})|cut -d_ -f2#e' {} \; ;-))
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
ben il me donne plein de message,
|
C'est la commande
|
Bon c'est surement le fait d'être sous Cygwin et pas sous un shell en natif sous GNU/Linux ;-((
[tmpfs]$ tree # arborescence
.
`-- rep
|-- sousrep1
| `-- doris1.in
|-- sousrep2
| `-- doris1.in
|-- sousrep3
| `-- doris1.in
|-- sousrep4
| `-- doris1.in
`-- sousrep5
`-- doris1.in
6 directories, 6 files
[tmpfs]$ cat rep/sousrep1/doris1.in # contenu fichier "doris1.in"
bla bla bla
bli bli bli
NUMMASTER
blo blo blo
NUMSLAVE
blu blu blu
[tmpfs]$ find . -type f -name "doris1.in" -exec sed '
s#NUMMASTER#basename $(dirname {})|cut -dr -f1#e
s#NUMSLAVE#basename $(dirname {})|cut -dr -f2#e
' {} \; # commande
bla bla bla
bli bli bli
sous
blo blo blo
ep5
blu blu blu
bla bla bla
bli bli bli
sous
blo blo blo
ep4
blu blu blu
bla bla bla
bli bli bli
sous
blo blo blo
ep3
blu blu blu
bla bla bla
bli bli bli
sous
blo blo blo
ep2
blu blu blu
bla bla bla
bli bli bli
sous
blo blo blo
ep1
blu blu blu
[tmpfs]$ ;-))
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Tiens je te colle le même test avec des sous-répertoires conforment aux tiens : [tmpfs]$ tree
.
`-- rep
|-- 19920501_19971011
| `-- doris1.in
|-- 19920501_19971012
| `-- doris1.in
|-- 19920501_19971013
| `-- doris1.in
|-- 19920501_19971014
| `-- doris1.in
|-- 19920501_19971015
| `-- doris1.in
|-- 19920502_19971011
| `-- doris1.in
|-- 19920502_19971012
| `-- doris1.in
|-- 19920502_19971013
| `-- doris1.in
|-- 19920502_19971014
| `-- doris1.in
|-- 19920502_19971015
| `-- doris1.in
|-- 19920503_19971011
| `-- doris1.in
|-- 19920503_19971012
| `-- doris1.in
|-- 19920503_19971013
| `-- doris1.in
|-- 19920503_19971014
| `-- doris1.in
|-- 19920503_19971015
| `-- doris1.in
|-- 19920504_19971011
| `-- doris1.in
|-- 19920504_19971012
| `-- doris1.in
|-- 19920504_19971013
| `-- doris1.in
|-- 19920504_19971014
| `-- doris1.in
|-- 19920504_19971015
| `-- doris1.in
|-- 19920505_19971011
| `-- doris1.in
|-- 19920505_19971012
| `-- doris1.in
|-- 19920505_19971013
| `-- doris1.in
|-- 19920505_19971014
| `-- doris1.in
`-- 19920505_19971015
`-- doris1.in
26 directories, 25 files
[tmpfs]$ find . -type f -name "doris1.in" -exec sed '
s#NUMMASTER#basename $(dirname {})|cut -d_ -f1#e
s#NUMSLAVE#basename $(dirname {})|cut -d_ -f2#e
' {} \;
bla bla bla
bli bli bli
19920505
blo blo blo
19971015
blu blu blu
bla bla bla
bli bli bli
19920505
blo blo blo
19971014
blu blu blu
bla bla bla
bli bli bli
19920505
blo blo blo
19971013
blu blu blu
bla bla bla
bli bli bli
19920505
blo blo blo
19971012
blu blu blu
bla bla bla
bli bli bli
19920505
blo blo blo
19971011
blu blu blu
bla bla bla
bli bli bli
19920504
blo blo blo
19971015
blu blu blu
bla bla bla
bli bli bli
19920504
blo blo blo
19971014
blu blu blu
bla bla bla
bli bli bli
19920504
blo blo blo
19971013
blu blu blu
bla bla bla
bli bli bli
19920504
blo blo blo
19971012
blu blu blu
bla bla bla
bli bli bli
19920504
blo blo blo
19971011
blu blu blu
bla bla bla
bli bli bli
19920503
blo blo blo
19971015
blu blu blu
bla bla bla
bli bli bli
19920503
blo blo blo
19971014
blu blu blu
bla bla bla
bli bli bli
19920503
blo blo blo
19971013
blu blu blu
bla bla bla
bli bli bli
19920503
blo blo blo
19971012
blu blu blu
bla bla bla
bli bli bli
19920503
blo blo blo
19971011
blu blu blu
bla bla bla
bli bli bli
19920502
blo blo blo
19971015
blu blu blu
bla bla bla
bli bli bli
19920502
blo blo blo
19971014
blu blu blu
bla bla bla
bli bli bli
19920502
blo blo blo
19971013
blu blu blu
bla bla bla
bli bli bli
19920502
blo blo blo
19971012
blu blu blu
bla bla bla
bli bli bli
19920502
blo blo blo
19971011
blu blu blu
bla bla bla
bli bli bli
19920501
blo blo blo
19971015
blu blu blu
bla bla bla
bli bli bli
19920501
blo blo blo
19971014
blu blu blu
bla bla bla
bli bli bli
19920501
blo blo blo
19971013
blu blu blu
bla bla bla
bli bli bli
19920501
blo blo blo
19971012
blu blu blu
bla bla bla
bli bli bli
19920501
blo blo blo
19971011
blu blu blu
[tmpfs]$
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |