#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
-- 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
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
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
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