[Linux-31] sed pb pour geek...

jpcas jpcas at free.fr
Mar 25 Mar 10:07:31 CET 2014


:z
On défini une étiquette de branchement

N
On ajoute la ligne suivante dans l'espace de travail

/<\/node>/!bz
Si l'espace de travail ne contient pas (! exprime la négation) le motif
recherché, alors on se branche (commande b) à l'étiquette préalablement
créée et on recommence. Quand le motif est rencontré, on passe à la
suite des commandes sur la ligne.

/"dance"/p
Si le motif est trouvé, on imprime sur la sortie standard le contenu de
l'espace de travail.



Par contre je ne pense pas que sed soit l'outil le plus adapté pour
parser du xml. Il existe des outils pour ça. Là je ne les ai plus en
tête, mais si ça me revient, je t'en ferai part.


Le 24/03/2014 22:53, Pti-Jean a écrit :
> Le 24/03/2014 21:47, jpcas a écrit :
>> Cette syntaxe devrait le faire :
>>
>> sed -n '/<node id=/{:z;N;/<\/node>/!bz;/"dance"/p}'
>> midi-pyrenees-latest.osm
> 
> Oui, ça a l'air de fonctionner...
> Mais, il y-a un historique des <node id= ... du coup c'est envahissent...
> Y a comprend pas trop la commande... quelques explication serait bien
> venu...
> Y a t-il pas moyen avec sed de trouver dance et de remonté jusqu'au
> premier  <node id= ... cela éviterait d'avoir une énorme quantité de
> <node id= dans le résultat.
> 
> Es que c'est posible ? trouver un motif, remonter vers l'autre motif...
> et afficher le résultat entre les motifs.
> 
> JM



Plus d'informations sur la liste de diffusion Linux-31