Pages : 1
#1 Le 19/01/2011, à 17:18
- FRUiT
[Résolu] Aide awk ou sed
Bonjour tout le monde.
Voilà je bute sur un problème particulier. Soit 'fichier', de la forme :
--- mardi 8 décembre 2009, 12:38:10 (UTC+0100) ---
exit
--- mardi 8 décembre 2009, 12:39:02 (UTC+0100) ---
--- mardi 8 décembre 2009, 12:41:35 (UTC+0100) ---
--- mardi 8 décembre 2009, 12:44:59 (UTC+0100) ---
--- mardi 8 décembre 2009, 12:45:47 (UTC+0100) ---
--- mardi 8 décembre 2009, 12:48:39 (UTC+0100) ---
--- mardi 8 décembre 2009, 12:49:27 (UTC+0100) ---
--- mardi 8 décembre 2009, 12:50:02 (UTC+0100) ---
promptype -s
--- mardi 8 décembre 2009, 12:51:04 (UTC+0100) ---
promptype -n
echo -e "\033[1B"
echo -e "\033[30A"
--- mardi 8 décembre 2009, 13:33:19 (UTC+0100) ---
promptype -v
echo -e $STR
echo -e "$STR"
env
echo "$STR"
echo "$S"
env | grep S
--- mardi 8 décembre 2009, 13:57:14 (UTC+0100) ---
--- mardi 8 décembre 2009, 13:57:29 (UTC+0100) ---
--- mardi 8 décembre 2009, 14:00:01 (UTC+0100) ---
which w3m
w3m ctlseqs.ms
--- mardi 8 décembre 2009, 14:03:26 (UTC+0100) ---
qui est l'historique de ma console. Les sessions sont délimitées par '--- $(date) ---'.
Avec awk, je supprime toutes les lignes doublons, ce qui a pour conséquence de parfois 'vider' le contenu entre deux ou plusieurs sessions (les enchainements de lignes '--- $(date) ---'.
Je voudrais, lorsque le cas se présente, pouvoir supprimer les intitulés des sessions "vidées", sauf la dernière. Le seul dénominateur commun entre ces lignes étant qu'elles commencent et finissent par '---'.
Exemple :
env | grep S
--- mardi 8 décembre 2009, 13:57:14 (UTC+0100) ---
--- mardi 8 décembre 2009, 13:57:29 (UTC+0100) ---
--- mardi 8 décembre 2009, 14:00:01 (UTC+0100) ---
which w3m
qui deviendrait :
env | grep S
--- mardi 8 décembre 2009, 14:00:01 (UTC+0100) ---
which w3m
Et ceci de manière bien évidemment récursive et avec le moins de lignes possible de code, l'idéal étant un one-liner awk ou sed.
Si quelqu'un peut m'éclairer, j'ai vraiment du mal :'(
Dernière modification par FRUiT (Le 19/01/2011, à 17:58)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#2 Le 19/01/2011, à 17:42
- chopinhauer
Re : [Résolu] Aide awk ou sed
Tu veux donc fournir à AWK un petit look-ahead. Pour faire cela tu vas devoir sauvegarder la ligne courante ailleurs et l'imprimer après. Par exemple :
# Ne rien imprimer à la première ligne
FNR==1{last=$0;next}
!/^---/||!(last~/^---/) {print last;}
{last=$0;}
# N'oublions pas d'imprimer la dernière ligne
END{print last;}
Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.
Hors ligne
#3 Le 19/01/2011, à 17:58
- FRUiT
Re : [Résolu] Aide awk ou sed
Excellent, félicitation et grand énorme merci cher chopinhauer, rien à redire, résolu !
Dernière modification par FRUiT (Le 19/01/2011, à 18:03)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne