commande SED - Shell/Batch - Programmation
Marsh Posté le 09-06-2004 à 11:14:30
http://www.shellunix.com/sed.html
Marsh Posté le 09-06-2004 à 11:51:07
c gentil.
mais ça m'aide pas des masses ('suis un peu une bille en shell...)
une commande me mettrait + sur la voie.
je cherche à remplacer:
NEW_MESSAGES
par:
PART1
PART2
(sur 2 lignes)
j'en suis là:
# remplacement des occurences
ed - file.Txt <<EOF
1,\$a/NEW_MESSAGES/PART1 \n PART2 (le \n c pour l'exemple)
w
q
EOF
qui peut me pondre la bonne-bonne comande qui va bien?...
merci encore
Arnaud.
Marsh Posté le 09-06-2004 à 12:00:53
Essaye ça:
(Unix): cat source.txt | sed -s "s/NEW_MESSAGES/PART1\nPART2/g" > cible.txt
(Win): type source.txt | sed -s "s/NEW_MESSAGES/PART1\nPART2/g" > cible.txt
Marsh Posté le 09-06-2004 à 12:12:10
bah non, a priori.
par contre, je peux peux que je pourrais juste:
ajouter PART2 apres NEW_MESSAGES,
puis faire pareil avec PART3.
pas grave si je conserve NEW_MESSAGES.
y'a une option d'insertion avec sed non?
genre /NEW_MESSAGES/i\ PART2 ? un truc dans le genre
Marsh Posté le 09-06-2004 à 12:19:42
arnoarno a écrit : bah non, a priori. |
Reformule ta question plus clairement.
Sinon: cat source.txt | sed -s "s/NEW_MESSAGES/\0 PART2/g" > cible.txt
Marsh Posté le 09-06-2004 à 13:35:45
desole pour le manque de clarte.
je veux soit:
1.
substituer la ligne contenant NEW_MESSAGES par les 2 lignes PART2 (saut de ligne) PART3
=> dans mon fichier:
NEW_MESSAGES
=> en sortie (dans mon fichier):
PART2
PART3
2.
inserer les 2 lignes PART2 (saut de ligne) PART3 apres NEW_MESSAGES
=> dans mon fichier:
NEW_MESSAGES
=> en sortie (dans mon fichier):
NEW_MESSAGES
PART2
PART3
le cat n'a pas l'air de fonctionner, ça me ressort le "\O" dans ma chaine de caractere en sortie.
Marsh Posté le 09-06-2004 à 13:52:50
Regarde si dans l'aide du SED, tu as l'option --text et dans ce cas utilise là...
Sinon essaye:
1) |
N'oublie pas d'ajouter --text. A la limite copikol l'aide du sed.
Marsh Posté le 09-06-2004 à 14:56:00
merci pour ton aide KFMAN,
mais ça passe pas, au niveau du cat.
Marsh Posté le 09-06-2004 à 15:15:10
Bizzare, ce sont bien des fichiers textes ?
Si tu fais un cat seul, ça donne quoi ?
Peux-tu poster un exemple de sortie ?
Marsh Posté le 09-06-2004 à 15:30:38
ok, g trouvé un moyen.
ed -file.txt <<EOF
/NEW-MESSAGES
.s/NEW_MESSAGES/PART2/
.a
PART3
.
w
q
EOF
je substitue le NEW_MESSAGES en PART2,
puis j'ajoute sur la ligne suivante PART3.
en fait, il me manquait le "." apres la parametre passé pour l'append
merci qd meme KFMAN
Marsh Posté le 09-06-2004 à 10:32:15
j'suis pas expert, alors voils:
avec la commande SED, ou autre chose d'ailleurs.
comment remplacer le mot "TEST" par "NEW (saut de ligne) NEW2"
en gros, un mot par une chaine de caractere sur 2 lignes.
pour preciser:
je ne veux pas passer 2 lignes en entree, mais avoir 2 lignes en sortie !
merci d'avance pour la réponse.
Arnaud