#1 Le 01/12/2007, à 19:18
- Sleipnir
[sed] Extraire une partie d'un texte
Bjr,
J'ai encore passer l'après-midi sur sed.....Je ne suis pas très productif !
Voilà le soucis: un fichier
un fichier text quelconque <item> qui sert
à rien.........
blabla.....
et voilà la fin de fichier <item1> qui fini mal...!
Je voudrais récupérer la partie de texte contenu entre <item> et <item1>, sans afficher les <item> en sortie.
J'ai essayé plein de trucs mais sans réussir, ce qui m'a donné les meilleurs résultats:
cat fichier | sed -n ' /<item>/,/<item1>/{ /<item>/b;/<item1>/b;/.*/p }'
Merci d'avance
Hors ligne
#2 Le 01/12/2007, à 19:42
- Alain.g
Re : [sed] Extraire une partie d'un texte
Salut,
Tu aurais plutôt intérêt à utiliser perl.
Pour toutes les occurrences :
cat fichier | perl -0777ne 'print "$1\n" while /<item>(.*?)<item1>/gs'
Xubuntu Karmic !
Hors ligne
#3 Le 01/12/2007, à 20:17
- Sleipnir
Re : [sed] Extraire une partie d'un texte
Salut,
Tu aurais plutà´t intérêt à utiliser perl.
Pour toutes les occurrences :
cat fichier | perl -0777ne 'print "$1\n" while /<item>(.*?)<item1>/gs'
OULAHH, perl... Une chose à la fois, sinon ça va se bousculer dans ma ptite tete.
Avec sed donc pas possible, je m'en doutais un peu vu qu'il ne travaille qu'à la ligne...J'avais pourtant eu un peu d'espoirs avec les commandes que j'avais peu voir .
Merci
Hors ligne
#4 Le 01/12/2007, à 22:10
- s@mson
Re : [sed] Extraire une partie d'un texte
salut,
je ferai
cat fichier | sed -n '/item/,/item1/p' | grep -v item
Dernière modification par s@mson (Le 01/12/2007, à 22:11)
Hors ligne
#5 Le 01/12/2007, à 22:29
- Alain.g
Re : [sed] Extraire une partie d'un texte
ça ne peut pas aller s@mson, rien que sur cet exemple, tu n'obtiendrais ni le "qui sert" ni "et voilà la fin de fichier " ;-)
Xubuntu Karmic !
Hors ligne
#6 Le 02/12/2007, à 13:46
- s@mson
Re : [sed] Extraire une partie d'un texte
oula... je devais être fatigué hier désolé ! Je sais pas pourquoi j'ai voulu enlevé les lignes entières ! Je vais réfléchir à nouveau...
Hors ligne
#7 Le 02/12/2007, à 13:56
- s@mson
Re : [sed] Extraire une partie d'un texte
cat fichier | sed -n '/item/,/item1/p' | sed -e 's:.*<item>::' | sed -e 's:<item1>.*::'
C'est brut de décoffrage,
Sleipnir: est ce que tu voulais le faire avec l'application d'un seul filtre?
Dernière modification par s@mson (Le 02/12/2007, à 13:58)
Hors ligne
#8 Le 02/12/2007, à 13:57
- BlaireauOne
Re : [sed] Extraire une partie d'un texte
perl est très puissant, mais en faisant 2 passages avec des instructions basiques de sed, ça peut le faire
sed -n -e '/<item>/,/<item1>/p' liste.txt | sed -e 's/.*<item>//' -e 's/<item1>.*//'
Hors ligne
#9 Le 02/12/2007, à 14:00
- s@mson
Re : [sed] Extraire une partie d'un texte
héhé BlaireauOne, on est sur la même longueur d'onde! mdr
Hors ligne
#10 Le 02/12/2007, à 16:17
- BlaireauOne
Re : [sed] Extraire une partie d'un texte
héhé BlaireauOne, on est sur la même longueur d'onde! mdr
Effectivement, et je t'assure que ce n'est pas du plagiat
Hors ligne
#11 Le 02/12/2007, à 18:04
- Alain.g
Re : [sed] Extraire une partie d'un texte
Vos solutions ne fonctionneront que s'il n'y a qu'une occurrence, sinon cela posera problème si par exemple il y a a plusieurs sur une même ligne
Xubuntu Karmic !
Hors ligne