Vi et cygwin
Fermé
CYG
-
27 févr. 2008 à 16:35
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 29 févr. 2008 à 16:18
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 29 févr. 2008 à 16:18
A voir également:
- Vi et cygwin
- Gta vi prix - Accueil - Jeu vidéo
- Désinstaller cygwin - Forum Windows
- Waptrick vi - Télécharger - Divers TV & Vidéo
- Telecharger cygwin - Télécharger - Édition & Programmation
- Vi tout selectionner - Forum Linux / Unix
16 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
27 févr. 2008 à 19:04
27 févr. 2008 à 19:04
Salut,
Tu tiens vraiment à faire ça avec "vi" ?
Parce qu'il y a des solutions bien plus aisées, notamment avec "ed" ou "sed"...
;-))
Tu tiens vraiment à faire ça avec "vi" ?
Parce qu'il y a des solutions bien plus aisées, notamment avec "ed" ou "sed"...
;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 févr. 2008 à 09:30
28 févr. 2008 à 09:30
Re-
Essaie ça dans un 1er temps :
Essaie ça dans un 1er temps :
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é.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 févr. 2008 à 09:57
28 févr. 2008 à 09:57
Sed est installé au moins ?
oui, puisque j ai déja sed.exe, et quand je met la commande man sed, cygwin me donne plein d infos sur sed
dsl mais je suis encore débutant
CYG
dsl mais je suis encore débutant
CYG
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 févr. 2008 à 10:54
28 févr. 2008 à 10:54
T'as bien tapé la commande comme donnée ci-dessus, sur une seule ligne, et sans oublié le "\;" à la fin ???
merci bcp;
ça marche bien pour un fichier; mnt je veux bien écrire un script qui contient une trentaine de ligne et chaque ligne présente cette commande (find . -type f -name "doris1.in" -exec sed 's/NUMMASTER/19920505/;s/NUMSLAVE/19971015/' {} \;)
ce qui va changer ce sont les dates pour NUMMASTER et NUMSLAVE, et les sous répertoires
j ai une idée, mais ça marche pas, puisque dans la commande ya (") et (');
gawk '{print "cd ../" $0 "\n" "find . -type f -name" "doris1.in" "-exec sed 's/NUMMASTER/"substr($0,0,8)"/"";s/NUMSLAVE/"substr($0,10,0)"/""' {} \;"}' liste_orb_Couples.txt > test
le fichier iste_orb_Couples.txt contient les noms des sous répertoires par exemples (19920505_19971015\n19930714_19980410)
vous pouvez m aider???
CYG
ça marche bien pour un fichier; mnt je veux bien écrire un script qui contient une trentaine de ligne et chaque ligne présente cette commande (find . -type f -name "doris1.in" -exec sed 's/NUMMASTER/19920505/;s/NUMSLAVE/19971015/' {} \;)
ce qui va changer ce sont les dates pour NUMMASTER et NUMSLAVE, et les sous répertoires
j ai une idée, mais ça marche pas, puisque dans la commande ya (") et (');
gawk '{print "cd ../" $0 "\n" "find . -type f -name" "doris1.in" "-exec sed 's/NUMMASTER/"substr($0,0,8)"/"";s/NUMSLAVE/"substr($0,10,0)"/""' {} \;"}' liste_orb_Couples.txt > test
le fichier iste_orb_Couples.txt contient les noms des sous répertoires par exemples (19920505_19971015\n19930714_19980410)
vous pouvez m aider???
CYG
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 févr. 2008 à 12:12
28 févr. 2008 à 12:12
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 ?
sous_rép=19920505_19971015
NUMMASTER=19920505
NUMSLAVE=19971015
c'est bien ça ?
sous_rép=19920505_19971015
NUMMASTER=19920505
NUMSLAVE=19971015
c'est bien ça ?
oui, c est ça
par exemple
dans le sous répertoire :19920505_19971015; j ai un certain fichier doris1.in, ce dernier contient les chaînes de caractéres NUMMASTER et NUMSLAVE que je veux les remplacer par 19920505 et 19971015 respectivement,
et je veux appliqué ça pour une trentaine de fichier doris1.in qui appartient à des sous répertoires différents
19930504_19960718, ......ainsi de suite
CYG
par exemple
dans le sous répertoire :19920505_19971015; j ai un certain fichier doris1.in, ce dernier contient les chaînes de caractéres NUMMASTER et NUMSLAVE que je veux les remplacer par 19920505 et 19971015 respectivement,
et je veux appliqué ça pour une trentaine de fichier doris1.in qui appartient à des sous répertoires différents
19930504_19960718, ......ainsi de suite
CYG
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 févr. 2008 à 16:25
28 févr. 2008 à 16:25
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\ ' {} \;;-))
j ai essayé cette commande, je l ai tapé dans une seule ligne et cygwin me lance
sed: -e expression #1, char 77: unknown option to 's'
sed: -e expression #1, char 77: unknown option to 's'
sed: -e expression #1, char 77: unknown option to 's'
CYG
sed: -e expression #1, char 77: unknown option to 's'
sed: -e expression #1, char 77: unknown option to 's'
sed: -e expression #1, char 77: unknown option to 's'
CYG
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 févr. 2008 à 17:35
28 févr. 2008 à 17:35
Quelle version de sed ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 févr. 2008 à 17:38
28 févr. 2008 à 17:38
Oups ;-((
Sur une seule ligne ça doit ressembler à ça (il faut un point virgule entre les 2 expressions de "sed") :
Sur une seule ligne ça doit ressembler à ça (il faut un point virgule entre les 2 expressions de "sed") :
find . -type f -name "doris1.in" -exec sed 's#NUMMASTER#basename $(dirname {})|cut -d_ -f1#e ; s#NUMSLAVE#basename $(dirname {})|cut -d_ -f2#e' {} \;;-))
ben il me donne plein de message, et pour savoir ce qui se passe j ai ajout -i aprés sed pour appliquée la commande sur les fichiers doris, le résultat, il a effacer ttes les lignes qui contiennent NUMMASTER ou NUMSLAVE
waw
;.))
waw
;.))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 févr. 2008 à 18:07
28 févr. 2008 à 18:07
ben il me donne plein de message,
Ben lesquels ???
et pour savoir ce qui se passe j ai ajout -i aprés sed pour appliquée la commande sur les fichiers doris, le résultat, il a effacer ttes les lignes qui contiennent NUMMASTER ou NUMSLAVE
C'est bien pour ça que je n'avais pas mis le switch dans mon expression, d'abord vérifier l'affichage sur la sortie standard avant d'appliquer directement ;-\
Copie/colle la ligne que tu emploies et la sortie occasionnée (coupe un peu si c'est trop long, ou colle le résultat sur cjoint)
Ben lesquels ???
et pour savoir ce qui se passe j ai ajout -i aprés sed pour appliquée la commande sur les fichiers doris, le résultat, il a effacer ttes les lignes qui contiennent NUMMASTER ou NUMSLAVE
C'est bien pour ça que je n'avais pas mis le switch dans mon expression, d'abord vérifier l'affichage sur la sortie standard avant d'appliquer directement ;-\
Copie/colle la ligne que tu emploies et la sortie occasionnée (coupe un peu si c'est trop long, ou colle le résultat sur cjoint)
c'est la commande
find . -type f -name "doris1.in" -exec sed 's#NUMMASTER#basename $(dirname {})|cut -d_ -f1#e ; s#NUMSLAVE#basename $(dirname {})|cut -d_ -f2#e' {} \;
les messages
/bin/sh: c: command not found
/bin/sh: c: command not found
cut: invalid byte or field list
try 'cut --help' fore more information.
/bin/sh:M_IN_NULL: command not found
cut: invalid byte or field list
try 'cut --help' fore more information.
/bin/sh:M_IN_VOL: command not found
cut: invalid byte or field list
try 'cut --help' fore more information.
/bin/sh:M_IN_LEA: command not found
cut: invalid byte or field list
try 'cut --help' fore more information.
/bin/sh:M_IN_LEA: command not found
cut: invalid byte or field list
try 'cut --help' fore more information.
.
.
.
.
.
.
.
.
.
.
find . -type f -name "doris1.in" -exec sed 's#NUMMASTER#basename $(dirname {})|cut -d_ -f1#e ; s#NUMSLAVE#basename $(dirname {})|cut -d_ -f2#e' {} \;
les messages
/bin/sh: c: command not found
/bin/sh: c: command not found
cut: invalid byte or field list
try 'cut --help' fore more information.
/bin/sh:M_IN_NULL: command not found
cut: invalid byte or field list
try 'cut --help' fore more information.
/bin/sh:M_IN_VOL: command not found
cut: invalid byte or field list
try 'cut --help' fore more information.
/bin/sh:M_IN_LEA: command not found
cut: invalid byte or field list
try 'cut --help' fore more information.
/bin/sh:M_IN_LEA: command not found
cut: invalid byte or field list
try 'cut --help' fore more information.
.
.
.
.
.
.
.
.
.
.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 févr. 2008 à 18:33
28 févr. 2008 à 18:33
Bon c'est surement le fait d'être sous Cygwin et pas sous un shell en natif sous GNU/Linux ;-((
Voilà ce que ça donne chez moi, bon les noms des répertoires ne sont pas les mêmes (mais ça c'est pas grave c'est le résultat qui compte), ainsi que le délimiteur de la commande "cut, adapté pour l'occasion pour partager le nom du répertoire en 2...
Voilà ce que ça donne chez moi, bon les noms des répertoires ne sont pas les mêmes (mais ça c'est pas grave c'est le résultat qui compte), ainsi que le délimiteur de la commande "cut, adapté pour l'occasion pour partager le nom du répertoire en 2...
[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]$;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 févr. 2008 à 18:52
28 févr. 2008 à 18:52
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]$
merci bcp
le probléme est résolu
CYG
le probléme est résolu
CYG
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
29 févr. 2008 à 16:18
29 févr. 2008 à 16:18
De rien, mais peut-on savoir de quelle façon, s'il te plaît ?
Merci d'avance ;-)
Merci d'avance ;-)
28 févr. 2008 à 09:18
merci pour votre réponse;
mon obejectifs c est de remplacer les chaînes de caractére par d autres chaînes, dans plusieurs fichiers appartenant à différents sous répértoires, quelque soit le moyen (vi, emacs, ed, sed), donc si vous connaissez une commande sur sed ou ed qui me facilite la tâche, je vous serais reconnaissant de m aider
CYG