Extraire les date dans un fichier texte

Résolu
babare -  
babare76 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -
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 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896 > babare76 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
Essaye alors avec :
sort -u -k2
0
babare76 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
c super sa marche à merveille merci pour votre disponibilité thanks
0
babare76 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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   Statut Membre Dernière intervention  
 
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 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
sort -u -t ";" -k2 fichier | awk -F";" '{ print $2 }' | uniq -c
0
babare76 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
sa marche à merveille merci pour votre disponibilité

best regards
0