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 19/10/2008, à 22:04

lowje

sed, grep, cut et autres festivités

Bonjour,

avant tout, merci à toute la communauté ubuntu française grâce à laquelle, je me suis débrouillée sous linux depuis plus d'un an sans à avoir à poser de questions (les réponses étant déjà dans la doc ou sur le forum). De plus, si jamais je me trompe de forum, veuillez par avance m'en excuser et m'indiquer, s'il vous plaid, où exposer ma requête.


Voilà, j'ai bien lu la page sed, grep et tenté de comprendre les man mais je suis toujours bloquée.
Imaginons que j'ai le fichier texte suivant /home/lowje/test :

ligneX
pouet
ligneY

Imaginons que la deuxième ligne de ce fichier change régulièrement. Donc là c'est "pouet" mais dans 2 minutes se sera peut-être "pouf" mais dans tout les cas, la ligne au dessus sera "ligneX" (ou si ça peut aider, la ligne dessous sera toujours "ligneY"). Quel commande dois-je utiliser pour que le terminal me renvoie "pouet" ou quoi que ce soit à la seconde ligne ?


Autre façon de le voir : si mon fichier /home/lowje/test avait été :

ligneXpouet
ligneY

J'aurais fait

grep ligneX /home/lowje/test | sed "s/ligneX//"

pour qu'il me renvoie "pouet" mais j'ai ce fichu retour à la ligne qui m'embête =)


Et encore une fois, si ce forum n'est pas approprié pour les débutantes en programmation, n'hésitez pas à me dire où m'adresser.

Hors ligne

#2 Le 20/10/2008, à 08:36

Alain.g

Re : sed, grep, cut et autres festivités

Bonjour

Avec SED
Pour afficher la ligne qui en suit une contenant ligneX :

sed -n '/ligneX/{n;p;}' ~/test

même chose mais ne contenant que ligneX

sed -n '/^ligneX$/{n;p;}' ~/test

la ligne qui en précède une contenant ligneY :

sed -n '/ligneY/{g;1!p;};h' ~/test

Voir : http://sed.sourceforge.net/sed1line_fr.html

Avec GREP, il y a possibilité d'utiliser les options -A1 (une ligne après) ou -B1 (une ligne avant) et d'enlever la ligne qui correspond au motif avec tail ou head :

grep -A1 'ligneX' ~/test | tail -1

mais s'il y a plusieurs lignes qui correspondent, ça va forcément poser problème (on pourrait recourir éventuellement à "grep -v" mais ça devient un peu tordu)

Sinon, bien que ça ne soit pas le sens de la question, pour ne garder que le seconde ligne :

sed '2!d' ~/test

ou encore avec awk :

awk  '/ligneX/ {i=1;next} {if (i) {print ;i=0}}'

Dernière modification par Alain.g (Le 10/11/2008, à 13:01)


Xubuntu Karmic !

Hors ligne

#3 Le 20/10/2008, à 13:36

lowje

Re : sed, grep, cut et autres festivités

Merci beaucoup et merci pour le lien sur sourceforge.

Hors ligne

#4 Le 20/10/2008, à 13:53

Totor

Re : sed, grep, cut et autres festivités

Salut,

Comme doc pour sed, j'utilise beaucoup celle de du site www.commentcamarche.net

voilà, pour le reste, Alain a tout dit, comme à son habitude wink


-- Lucid Lynx --

Hors ligne

#5 Le 20/10/2008, à 14:06

tiky

Re : sed, grep, cut et autres festivités

sed -n '/^ligneX$/,/^ligneY$/p' test

Affiche tout ce qui se trouve entre ligneX et ligneY ( y compris ligneX et ligneY )


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#6 Le 20/10/2008, à 15:26

Zakhar

Re : sed, grep, cut et autres festivités

Alain.g a écrit :

mais s'il y a plusieurs lignes qui correspondent, ça va forcément poser problème (on pourrait recourir éventuellement à "grep -v" mais ça devient un peu tordu)

Et si c'est vraiment BEAUCOUP plus compliqué qu'un simple fichier texte aussi basique, utilise plutôt une syntaxe XML pour ton fichier source : il y a plein d'outils pour traiter le XML, notamment l'excellent XSL.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#7 Le 20/10/2008, à 17:11

yap22

Re : sed, grep, cut et autres festivités

Bonjour,

Pour afficher la 2ieme ligne d'un fichier de 3 lignes, tu peux utiliser :

head -2 <mon-fichier-txt> | tail -1

#8 Le 20/10/2008, à 19:56

lowje

Re : sed, grep, cut et autres festivités

Merci pour tout ces compléments d'info.

Mon fichier est le code source d'une page web pas bien compliquée mais je vais jeter un oeil à XLS dans le doute.

Hors ligne

#9 Le 20/10/2008, à 20:10

tiky

Re : sed, grep, cut et autres festivités

lowje a écrit :

Merci pour tout ces compléments d'info.

Mon fichier est le code source d'une page web pas bien compliquée mais je vais jeter un oeil à XLS dans le doute.

S'il s'agit de code html, un parseur XML serait l'idéal !


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#10 Le 21/10/2008, à 16:49

kaer

Re : sed, grep, cut et autres festivités

tiky a écrit :
lowje a écrit :

Merci pour tout ces compléments d'info.

Mon fichier est le code source d'une page web pas bien compliquée mais je vais jeter un oeil à XLS dans le doute.

S'il s'agit de code html, un parseur XML serait l'idéal !

Ou un parseur html si le code est "exotique". En python tu as BeautifulSoup qui est trés tollérant et fait des merveilles.

http://www.crummy.com/software/BeautifulSoup/

Hors ligne