Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

Alain.g a écrit :

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 tongue



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

s@mson a écrit :

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 big_smile

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