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 07/03/2015, à 11:03

Le Goss

[Résolu] bash: grep awk et print: se référer à une ligne supérieure

Bonjour à tous,

Soit monfichier

lesnainsdeblancheneige!!un des 7 nains du dessin animé "Blanche neige"
Prof!!
Atchoum!!
Dormeur!!
Grincheux!!
Joyeux!!
Timide!!
Simplet!!
lesneveuxdedonald!!un des 3 neveux de Donald
Riri!!
Fifi!!
Loulou!!
lestroismousquetaires!!un des 3 mousquetaires
Aramis!!
Athos!!
Porthos!!

et monscript de départ

#!/bin/bash
read -p "Entrer le nom d'un personnage (exemple: simplet): " nom
cat monfichier | egrep -E -i "$nom" | awk -F "!!" '{printf "%s: %s\n", $1 , $2}'

Je voudrais modifier ce dernier afin que, s'il ne rencontre rien après "!!", il recherche la première ligne au-dessus.
Dans mon cas, si je rentre "simplet", je voudrais que le script me retourne

simplet: un des 7 nains du dessin animé "Blanche neige"

Pour Fifi

Fifi: un des 3 neveux de Donald

etc.

Merci pour votre aide,
Cordialement

Dernière modification par Le Goss (Le 07/03/2015, à 12:18)


Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags

Hors ligne

#2 Le 07/03/2015, à 11:57

pingouinux

Re : [Résolu] bash: grep awk et print: se référer à une ligne supérieure

Bonjour,

aawk -v nom="$nom" -F '!!' '{if($2){_=$2}else{if(tolower($1)==tolower(nom))printf "%s: %s\n", $1 , _}}' monfichier

Hors ligne

#3 Le 07/03/2015, à 12:17

Le Goss

Re : [Résolu] bash: grep awk et print: se référer à une ligne supérieure

Parfait!
Merci à toi!


Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags

Hors ligne