|
Publicité | ||||||||||||||||||||||
|
|
#1 | ||||||||||||
|
Membre régulier
![]() Inscription : mars 2007 Messages : 88 ![]() |
Bonjour,
Je suis donc sur HP UX version 11.23 J'ai un fichier (file.dat) texte qui est une suite de xml : Code :
Code :
J'ai donc créer un fichier de commande sed (OneLine.sed) qui contient ceci : Code :
Code :
Si j'essaie de remplacer le LF par \n : pas d'erreur mais il ne traite pas "\n" comme étant un passage à la ligne. Il me rajoute simplement un 'n' comme ceci : Code :
Mais pour avancer un peu j'ai essayé d'enlever les LF avec la commande tr puis de lancer un sed Code :
Code :
<Requete><Valeur1>un</Valeur1><Valeur2></Valeur2><Valeur3>trois</Valeur3></Requete><Requete><Valeur1>un</Valeur1><Valeur2>deux</Valeur2><Valeur3>trois</Valeur3></Requete> Mais sed ne lit même pas le fichier file.tmp, et je me retrouve avec un file.out vide. En revanche si je rajoute manuellement un LF à la fin de file.tmp, il traite le fichier... Il semble qu'il faille donc au moins un LF pour que sed traite le fichier. Bref, j'ai essayé pas mal de chose, mais je n'arrive pas au résultat escompté... Une idée ? Merci |
||||||||||||
|
|
00
|
|
|
#2 | ||||
|
Membre régulier
![]() Inscription : mars 2007 Messages : 88 ![]() |
en fait il faut "escaper" le LF dans le fichier sed.
Pas moyen de faire cela en une seule commande SED. Il faut rajouter un LF à la fin du fichier tmp pour que sed le prenne en compte. Le OneLine.sed est donc : Code :
Code :
Code :
awk '{printf("%s", $0); if ($0 == "</Requete>" ) print}' file.dat > file.out
Dernière modification par rafuoner ; 07/01/2010 à 14h19. |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com