Problème avec Ed

Résolu/Fermé
seyar666
Messages postés
16
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
16 mai 2008
- 15 mai 2008 à 14:56
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
- 16 mai 2008 à 10:32
Bonjour,

J'utilise ed depuis peu et j'ai des petits problèmes pour finir une commande qui se présente comme suit :
ed fichier 1s/avant/apres

Lorsque je l'exécute, le programme attend que j'ajoute w pour écrire et q pour quitter. Y a t il un moyen de tout faire d'un seul coup ?

Merci,

3 réponses

jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
15 mai 2008 à 15:08
Salut,
jp@MDK:~/tmpfs ssh$ cat plop
a
a b c
b c
d
b e
f

jp@MDK:~/tmpfs ssh$ ed -s plop <<< $'2s/b/B/\nw'
jp@MDK:~/tmpfs ssh$ cat plop
a
a B c
b c
d
b e
f

jp@MDK:~/tmpfs ssh$
;-))
0
seyar666
Messages postés
16
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
16 mai 2008

15 mai 2008 à 15:14
T'es sur ?
J'ai déjà vu cette solution ailleurs sur le forum et ça ne marchait pas.
Les 3 chevrons me paraissaient bizzares et j'ai le message syntax error: `<' unexpected.
0
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897 > seyar666
Messages postés
16
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
16 mai 2008

15 mai 2008 à 15:46
T'es sur ?
Ben la preuve que ça marche, non ?

Sinon essaie comme ça :
jp@MDK:~/tmpfs ssh$ ed plop <<EOF
> 3 s/c/C/
> w
> EOF
21
21
jp@MDK:~/tmpfs ssh$ cat plop
a
a B c
b C
d
b e
f

jp@MDK:~/tmpfs ssh$
;-))
0
seyar666
Messages postés
16
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
16 mai 2008
> jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

15 mai 2008 à 16:54
Ca marche en ligne de commande seul mais dès que je l'inclus dans un fichier ça passe plus.
Est ce que le fait d'être en ksh ça peut changer qqc ?
0
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897 > seyar666
Messages postés
16
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
16 mai 2008

15 mai 2008 à 21:23
T'es obligé de faire avec "ed" ?
Tu veux pas faire ça avec "sed" ?
0
seyar666
Messages postés
16
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
16 mai 2008
> jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

16 mai 2008 à 09:32
J'ai commencé avec sed mais le pb c'est que je peux pas faire ma substitution dans un fichier et renvoyer le résultat sur le même fichier. Il faut passer par un fichier temporaire et du coup, je perd en performance.
0
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
16 mai 2008 à 10:10
Bon je viens de faire un essai avec "ksh" et "ed" en reprenant l'exemple avec "<<EOF" et ça marche très bien...
$ cat foo.sh
#! /bin/ksh

echo "Contenu du fichier fic :"
cat fic
echo
echo "Traitement du fichier fic par ed"
echo
ed -s fic <<EOF
1 s/Bonjour/Salut/
w
EOF

echo "Résultat du traitement"
echo
cat fic

$ ./foo.sh
Contenu du fichier fic :
Bonjour,

Ça va ?
Bonjour,
Au revoir.

Traitement du fichier fic par ed

Résultat du traitement

Salut,

Ça va ?
Bonjour,
Au revoir.
$
;-))
0
seyar666
Messages postés
16
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
16 mai 2008

16 mai 2008 à 10:30
Ok ça marche très bien. Je te remercie.
0
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
16 mai 2008 à 10:32
De rien ;-))

Où était l'erreur ?
Peux-tu aussi répondre au message #7 histoire de mieux cerner le problème ?

Merci.
0