Extraire les date dans un fichier texte

Résolu/Fermé
babare - 16 oct. 2008 à 11:23
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008 - 23 oct. 2008 à 15:05
Bonjour,
j'ai une fichier.txt en format cvc
TOTO;tata;Id;First;Latest;
BEGIN;1;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;2;{internal,session_navigation,session_crashed};2008-10-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
j'aimerai extraire la colonne $6(first) pour avoir leur et par la suite distinguer le jour et la nuit.je suis un débutant j'éxécute la comande suivant pour pouvoir afficher l'heure mes elle marche pas.
awk 'BEGIN{FS=";"}; {print identite=" $2 " la_cause=" $3 " heuredebut=" $6 }' alarms.txt | awk {print" datededebut=" substr($6,11,5)} fichier.txt
pouviez vous m'aider svp.
A voir également:

19 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 oct. 2008 à 12:57
Pas besoin d'awk à mon avis...
(mando@aldur) (~) $ grep BEGIN pouet
BEGIN;1;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;2;{internal,session_navigation,session_crashed};2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
(mando@aldur) (~) $ grep BEGIN | cut -d";" -f4
2008-10-15 12:05:08 LOC
2008-1­0-15 22:10:08 LOC
(mando@aldur) (~) $ grep BEGIN | cut -d";" -f4 | cut -d" " -f2
12:05:08
22:10:08

Bonne chance
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 oct. 2008 à 15:21
edit : il fallait bien entendu lire :
grep BEGIN pouet | cut -d";" -f4
grep BEGIN pouet | cut -d";" -f4 | cut -d" " -f2
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
16 oct. 2008 à 13:27
thank mamiemando pour la réponse sa marche super bien. pourriez vous me donnes de piste pour différencier le jour de la nuit
sachant que le jour c de 8h à 20h et la nuit de 20h à 8h.

merci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
16 oct. 2008 à 14:18
Salut,

Tiens en partant de ton fichier et avec awk :
jp@MDK:~/tmpfs ssh$ cat babare
TOTO;tata;Id;First;Latest;
BEGIN;1;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;2;{internal,session_navigation,session_crashed};2008-10-15 22:10:08 LOC;2008-10-15 12:10:08 LOC

jp@MDK:~/tmpfs ssh$ awk -F';' '/BEGIN/ { if (substr($4,12,2) >= 8 || substr($4,12,2) <=20) { print $4" jour" } else { print $4" nuit"}}' babare
2008-10-15 12:05:08 LOC jour
2008-10-15 22:10:08 LOC nuit

jp@MDK:~/tmpfs ssh$
;-)
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
16 oct. 2008 à 15:39
Bonjour,
thank sa marche .je tentai de creer des variable dans un fichier sh pour faire des comparaison bref un histoire compliquer
mais la avec cette comande mon probléme est résolut je vous remercie.
si vous avez des liens utiles pour me former ou des exo je suis prennant.
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
17 oct. 2008 à 13:58
bonjour,
en partant de awk serais til possible d'afficher les éléments distinctes
TOTO;tata;Id;First;Latest;
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;external;{internal,session_navigation,session_crashed};2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC

je reprend la commande modifier
awk -F';' '/BEGIN/ { if (substr($2,1,8) != substr($2,1,8) <=20) { print $2" NAME" } babareTXT
mais celle ci ne marche pas .pourriez vous m'aidez svp
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
17 oct. 2008 à 14:56
serait-il possible d'afficher les éléments distincts
Euh... de quels éléments distincts tu parles ???

Dis ce que tu veux obtenir après, affiche un exemple...
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
17 oct. 2008 à 16:03
disons les élements distintes pour une colonnes sonné par exemple le fichier suivant
TOTO;tata;Id;First;Latest;

BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC

je voudrai afficher les élément distinct de la deuxiéme, genre je parcour le fichier et chaque fois que je rencontre un élément nouveaux à la 2é colonnes je la fiche

résulta souhaiter

BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC


on contate que j'ai internal et externaliser comme éléments distincte
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 oct. 2008 à 16:59
sed -n '/BEGIN/p' fichier | sort -u +1
;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
17 oct. 2008 à 17:55
merci pour ta réponse
voici ce qu j'obtient
[babare@fn eva]$ sed -n '/BEGIN/p' babare.txt | sort -u +1
sort: open failed: +1: No such file or directory
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 oct. 2008 à 17:59
Essaye alors avec :
sort -u -k2
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
17 oct. 2008 à 18:29
kan je fais sort -k2 je n'ai pas d'erreur mon fichier apparait mais je vois pas la différence avec l'originale

fichier avant
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­hed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC

fichier aprés
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­hed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 oct. 2008 à 18:36
Ah ? Pourtant c'est bien le résultat que tu voulais si j'en crois ton post #8, non ?
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
20 oct. 2008 à 14:02
je vous remercie encore pour votre disponibilité. sorry je me suis tromper ds la réponse j'ai
fichier avant
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
fichier aprés
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
et j'aimerai avoir
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
20 oct. 2008 à 15:10
Alors essaye :
 sort -u -t";" -k2,3
Un exemple :
jp@MDK:~/tmpfs ssh$ cat fichier
TOTO;tata;Id;First;Latest;

BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­hed}­;2008-1­0-15 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC

jp@MDK:~/tmpfs ssh$ sed -n '/BEGIN/p' fichier | sort -u -t";" -k2,3
BEGIN;externaliser;{internal,session_navigation,session_cras­hed}­;2008-1­0-15 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC

jp@MDK:~/tmpfs ssh$
;-))
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
20 oct. 2008 à 15:24
c super sa marche à merveille merci pour votre disponibilité thanks
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
21 oct. 2008 à 15:54
re bonjour,
génis du script j'aimerai classer mais log par jour semaine et mois
par exmple
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­hed}­;2008-1­0-23 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
pour avoir a peu prés
internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 1 fois par semaine
externaliser;{internal,session_navigation,session_cras­hed}­ 0 fois par semaine
internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 2 fois le mois
externaliser;{internal,session_navigation,session_cras­hed}­ 1 fois par semaine
thank
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
22 oct. 2008 à 10:40
pour le moment mon script est le suivant
#!/usr/bin/awk -f

BEGIN{
{FS=";"}
{nb_lignes = 0}
{nb_lignes = nb_lignes + 1}
{print "nombre de alarms= "nb_lignes}
}
{print "la liste des alarmes est la suivantes" $3 }

for (i = 1; i <= 5; i++)
occurence($3)}

function occurence (inc)
{
if ($3 == "inc") {h= h+1}
}
{print "Nb doccurences pour alarms:"h}
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
22 oct. 2008 à 12:08
Si tu veux classer, la commande sort pourrait t'aider, mais il faudrait que les dates apparaissent en début de ligne.
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
22 oct. 2008 à 16:03
je peu pas déplacer les dates c un logitiel qui me donne le fichier csv. de mon coté je doi faire un script pour réaliser la tache.
peut je peus faire un script qui modifie la position de la date et aprés un autre script pour classer

qu'est que t'en pense?
thank
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
22 oct. 2008 à 18:10
J'en pense que ca se fait assez facilement en c++ mais en shell je ne sais pas comment faire ça simplement. Peut-être que jipicy sera plus inspiré que moi pour le faire en shell.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
22 oct. 2008 à 20:58
Je ne suis pas sûr de tout bien avoir compris de ce que tu veux obtenir comme tri ;-\

En attendant, en partant de ce fichier auquel j'ai rajouté des entrées avec des dates différentes (mois et jours) :
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-17 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-03-30 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-11-09 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-08-25 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-05-03 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-01-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-07-13 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-12-23 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-11-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-09-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-10-23 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
Voilà un tri par mois et par jours avec affichage uniquement de la colonne 2 (nom) et la colonne des dates pour une meilleure visibilité du tri :
[tmpfs]$ sort -t ";" -k 4.1n,4.4n -k 4.6n,4.7n -k 4.9n,4.10n fich | awk -F ";" '{ printf "%s\t%s\n", $2,$4 }'

internal        2008-01-29 12:05:08 LOC
externaliser    2008-03-30 12:05:08 LOC
externaliser    2008-05-03 12:05:08 LOC
internal        2008-07-13 12:05:08 LOC
internal        2008-08-25 12:05:08 LOC
internal        2008-09-15 12:05:08 LOC
internal        2008-10-17 12:05:08 LOC
externaliser    2008-10-23 12:05:08 LOC
internal        2008-10-29 12:05:08 LOC
internal        2008-11-09 12:05:08 LOC
internal        2008-11-29 12:05:08 LOC
externaliser    2008-12-23 12:05:08 LOC

[tmpfs]$
;-))
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
23 oct. 2008 à 10:38
merci pour le tri c marche je pense que c plus correcte de l'afficher de cette maniére.
pourrez tu m'expliquer la commande please?
pour le script que j'ai mis précédament je voulais avoir le nombre d'occurence j'ai modifié le script et c ok.
mais je suis obliger de mettre de comparer a chaque fois les noms
#!/usr/bin/awk -f
W
BEGIN{
{FS=";"}
{print "la liste des alarmes est la suivantes:" $2}
}

{ for (i = 1; i <= RS; i++)
{print i}
occurence($2)
}
END{
{print "Nb doccurences pour internal:" h}
{print "nb doccurente pour external:" j}
}

function occurence(inc)
{
if (inc == "internal") {h= h+1}
if (inc == "external") {j= j+i}
}

résultat obtenu
la liste des alarmes est la suivantes:
Nb doccurences pour internal:6
nb doccurente pour external:2

je suis obliger de mettre tout les noms possible

thank
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
23 oct. 2008 à 11:04
Peux-tu poster un exemple assez significatif, avant => après, de ce que tu veux s'il te plaît, merci.
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
23 oct. 2008 à 11:38
disont avant j'ai ceci
je dois affiche le nombre de fois qu'un name est afficher


BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­0-17 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­­hed}­;2008-03-30 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;toto;{internal,push_sup,invalid_sql_tables};2008-1­1-09 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-0­8-25 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­­hed}­;2008-05-03 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;tata;{internal,push_sup,invalid_sql_tables};2008-0­1-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-0­7-13 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­­hed}­;2008-12-23 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­1-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-0­9-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_cras­­­hed}­;2008-10-23 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­0-29 12:05:08 LOC;2008-10-15 12:05:08 LOC



et j'aurai souhaiter avoir



le nombre d'occurence pour: externaliser : 3
le nombre d'occurence pour: toto: 1
le nombre d'occurence pour: internal: 5
le nombre d'occurence pour: tata: 1

thank
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
23 oct. 2008 à 13:17
sort -u -t ";" -k2 fichier | awk -F";" '{ print $2 }' | uniq -c
0
babare76 Messages postés 19 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 9 décembre 2008
23 oct. 2008 à 15:05
sa marche à merveille merci pour votre disponibilité

best regards
0