[Sed] Afficher plusieurs lignes de texte dans des balises

Afficher plusieurs lignes de texte dans des balises [Sed] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 23-11-2005 à 23:58:24    


Bonjour ,  
 
 
Alors voila , dans le cadre d'un script CGI , j'ai besoin de sélectionner certaines lignes d'un fichier texte.
Ces lignes sont délimitées par des balises (similaires à des balise HTML).
 
en gros un truc du genre :  
AA
BB
CC
DD
EE
<Directory>
FF
GG
HH
</Directory>

 
Et je voulais supprimer les lignes qui apparaissent entre les balises "Directory" , pour cela , j'ai utilisé la commande Sed suivante :  

Code :
  1. sed -e "/<Directory>/,/<\/Directory>/d" test.txt


 
Mais comment faire pour obtenir le resultat inverse (en gros afficher toutes les lignes en dehors des balises) ???  
J'ai essayé de rajouter de faire :  
 

Code :
  1. sed -e "/<Directory>/,/<\/Directory>/!d" test.txt


 
D'après ce document ça devrait fonctionner , mais comme d'hab ça marche pas comme ça devrait ^o^
 
Kelk'un aurait une idée ?
Merci d'avance.

Reply

Marsh Posté le 23-11-2005 à 23:58:24   

Reply

Marsh Posté le 24-11-2005 à 00:52:44    

Heu pour moi, "supprimer les lignes qui apparaissent entre les balises" et "afficher toutes les lignes en dehors des balises", c'est la même chose. J'imagine que tu veux afficher seulement les lignes entre les balises. Dans ce cas tu peux faire :

sed -e '/<Directory>/,/<\/Directory>/!d'


C'est ce que tu as fais, mais avec des ' a lieu des ". Sinon bash crois que le !s désigne la dernière commande en "d..." de l'historique.


Message édité par matafan le 24-11-2005 à 00:58:43
Reply

Marsh Posté le 24-11-2005 à 14:24:28    


Merci beaucoup!!!  
C'est tout à fait ça que je voulais faire....  (j'ai pas très bien compris pourkoi Bash interprétait la commande autrement , mais l'important est que ça fonctionne)
 
Juste encore une ptite question , à l'intérieur des balises je dois mettre un nom de répertoire , un truc du genre :  
 
<Directory "/home/nomcompte/truc/">
 
Dans le code je dois mettre le nom du repertoire dans une variable , j'ai donc un truc du genre :  
 

Code :
  1. sed -e '/<Directory \"$value\">/,/<\/Directory>/d' monfichier


 
Mais la encore j'ai un ptit problème avec le sed, je crois qu'il interprète chaque '/' dans la variable ....  
Comment faire pour lui faire comprendre que $value ne doit pas être interprété ?
 
Merci d'avance.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed