Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/04/2007, 21h15   #1
Membre confirmé
 
Avatar de fantomas261
 
Inscription : avril 2007
Messages : 463
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 463
Points : 227
Points : 227
Par défaut [CSH] Afficher la ligne suivante celle trouvée par grep

bonjour

je cherche comment afficher la ligne qui suit la ligne rechercher par une commande avec des filtre

grep -i "$1, par" fich.txt
cette expression me retourne plusieurs lignes et je voudrais connaitre les lignes qui suit chaque ligne trouvées dans fich.txt

merci

exemple

aaaaaaa, par aaaaaa
ligne suivante n°1
bbbbbbbbbbbbbbbb
aaaaaaa, par bbbbb
ligne suivante n°2
nnnnnnnnnnnnnnn

en ecrivant grep "aaaaaa, par" fich.txt
cette commande retourne la premiere et le quatrieme ligne

mais moi je voudrais connaitre aussi la le 2eme et la 5eme

merci
fantomas261 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2007, 21h23   #2
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Citation:
Envoyé par leopard261
bonjour

je cherche comment afficher la ligne qui suit la ligne rechercher par une commande avec des filtre

grep -i "$1, par" fich.txt
cette expression me retourne plusieurs lignes et je voudrais connaitre les lignes qui suit chaque ligne trouvées dans fich.txt

merci

exemple

aaaaaaa, par aaaaaa
ligne suivante n°1
bbbbbbbbbbbbbbbb
aaaaaaa, par bbbbb
ligne suivante n°2
nnnnnnnnnnnnnnn

en ecrivant grep "aaaaaa, par" fich.txt
cette commande retourne la premiere et le quatrieme ligne

mais moi je voudrais connaitre aussi la le 2eme et la 5eme

merci

Solution :

grep -i -A1 "$1, par" fich.txt


http://www.linux-kheops.com/doc/man/...n1/grep.1.html

.../...
-A num
Afficher num lignes supplémentaires après la ligne correspondante.
-B num
Afficher num lignes supplémentaires avant la ligne correspondante.
.../...
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 11h38   #3
Membre confirmé
 
Avatar de fantomas261
 
Inscription : avril 2007
Messages : 463
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 463
Points : 227
Points : 227
j aimerais afficher juste la ligne suivante

effet le problème est de chercher des livres dans une base de donnés
certains livres contiennent des résumés

par exemple

titre, par auteur
<<
résumé
>>

si la ligne suivante est << alors il y a un resumé et je dois afficher le titre et nom auteur puis le resumé
fantomas261 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 12h06   #4
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
heuuuu...... une base de donnée ASCII ?????
l'age du néolithique n'existe plus que en exercice scolaire .....

juste la ligne suivante :
Code :
1
2
 
grep -A1 "$1, par" fich.txt  | grep "<<"
montre un peut ou tu en est.
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 15h17   #5
Membre confirmé
 
Avatar de fantomas261
 
Inscription : avril 2007
Messages : 463
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 463
Points : 227
Points : 227
Citation:
Envoyé par MarcG
heuuuu...... une base de donnée ASCII ?????
l'age du néolithique n'existe plus que en exercice scolaire .....

juste la ligne suivante :
Code :
1
2
 
grep -A1 "$1, par" fich.txt  | grep "<<"
montre un peut ou tu en est.
je dois ecrire un programme en csh avec la technologie cgi.

j ai une page web qui recherche des livres
cette page est constitué d un champs de texte où je dois renseigner le titre ou l auteur du livre.
un bouton radio titre un bouton radio auteur
un case a coché pour obtenir le resumé.

une recherche me renvoie le titre du livre et le nom de l auteur
dans le fichiers texte , la structure est la suivante : titre, par auteur
si je coche le resumé la recherche renvoie lle titre du livre et le nom de l auteur et le resumé s il existe. une recherche peux me donner plusieurs resultat.

si je renseigne le titre et je coche pas le resumé
j ecrit
sed -e 's/éèê/e/g' -e 's/ô/o/g' (je ne dois pas ecrire de carateres accentués dans le champ de la page web) fich.txt| grep -i "$2.*, par" >>! resultats.txt

si je renseigne l auteur et je coche pas le resumé
j ecrit
sed -e 's/éèê/e/g' -e 's/ô/o/g' fich.txt| grep -i ", par .*$2" >>! resultats.txt

si je ne coche aucun des boutons :
sed -e 's/éèê/e/g' -e 's/ô/o/g' fich.txt| grep -i ", par .*$2" >>! resultats.txt
sed -e 's/éèê/e/g' -e 's/ô/o/g' fich.txt| grep -i "$2.*, par" >>! resultats.txt

pour le resumé j ai une petite idée mais la syntaxe n est pas bonne :

creer une liste qui contient les numero des debuts des resumés

set num `grep -A1 -n "$2.*,par fich.txt | grep ">>" | sed -e 's/->>//g' `

foreach n ($num)
set fin = `sed -e 1,{$n}d | grep -n "<<" | sed -e 's/ [[:digit]]//g'
sed -n 1,{$n}d $fin,(nombre_de_ligne_de_fich.txt)d >> resultat
puis faire un tri avec sort sur les numero , mais j ai plusieurs fich.txt ...
end

titre, par auteur
>>
resumé
<<
y a t il plus simple donner moi vos idees
fantomas261 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h29.


 
 
 
 
Partenaires

Hébergement Web