[sed] remplacer tout sauf une sous chaine ?

remplacer tout sauf une sous chaine ? [sed] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 01-07-2005 à 01:26:53    

voila je cherche comment utilisé l'inverse. Loogiquement on utilise le !
 
Ca serait pour remplacer plusieurs sous chaines sur une longues chaines
 
 
kjhsdfk <href="toto"> lkjqsdlkjqd <href="titi"> me renverrait <href="toto"> <href="titi">

Reply

Marsh Posté le 01-07-2005 à 01:26:53   

Reply

Marsh Posté le 01-07-2005 à 02:54:46    

sed 's/.*\(<href="toto">\).*\(<href="titi">\)/\1 \2/'

(pas testé mais je ne dois pas être loin)

Reply

Marsh Posté le 01-07-2005 à 03:05:58    

semble baon (à un espace pres)
 


[root@lfs01]# cat test.txt
kjhsdfk <href="toto"> lkjqsdlkjqd <href="titi">
[root@lfs01]# sed 's/.*\(<href="toto">\).*\(<href="titi">\)/\1 \2/' test.txt
<href="toto"> <href="titi">

Reply

Marsh Posté le 01-07-2005 à 12:03:09    

non ce n'est pas bon.
C'est une longue ligne. Je ne connais pas le nombre de sous chaine href ="  ". Apres ca se trouve il y a href="tata" apres.
 
J'ai une 15aine, 20aine de sous chaine href="  ", donc je ne pense pas que l'on puisse utiliser les motifs. C'est dans une tres longue chaine de caractère que je veux chercher.

Reply

Marsh Posté le 01-07-2005 à 16:20:49    

à essayer :
en 2 étapes :
on supprime tous les </ > puis tous les < > ainsi on a que le texte non balisé
 echo <maligne> | sed "s/<\/.*>//g" | sed "s/<..*>//g"
 
ex: avec <maligne>=<a href=><b>toto</b></a>
j'obtiens toto
Ca devrait être possible en une seule passe grâce aux expressions régulières étendues mais comme je connais pas ce domaine, ma solution utilisera 2 passes.

Reply

Sujets relatifs:

Leave a Replay

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