Extraire les date dans un fichier texte
Résolu
babare
-
babare76 Messages postés 20 Statut Membre -
babare76 Messages postés 20 Statut Membre -
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.
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.
Configuration: febora 6
19 réponses
-
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-10-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-10-15 22:10:08 LOC (mando@aldur) (~) $ grep BEGIN | cut -d";" -f4 | cut -d" " -f2 12:05:08 22:10:08
Bonne chance -
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 -
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$;-)
-
-
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-10-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
-
-
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-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed};2008-10-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 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-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed};2008-10-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
on contate que j'ai internal et externaliser comme éléments distincte -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed};2008-10-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
fichier aprés
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed};2008-10-15 22:10:08 LOC;2008-10-15 12:10:08 LOC-
Ah ? Pourtant c'est bien le résultat que tu voulais si j'en crois ton post #8, non ?
-
-
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-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed};2008-10-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
fichier aprés
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed};2008-10-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
et j'aimerai avoir
BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed};2008-10-15 22:10:08 LOC;2008-10-15 12:10:08 LOC-
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-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC BEGIN;externaliser;{internal,session_navigation,session_crashed};2008-10-15 12:05: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 jp@MDK:~/tmpfs ssh$ sed -n '/BEGIN/p' fichier | sort -u -t";" -k2,3 BEGIN;externaliser;{internal,session_navigation,session_crashed};2008-10-15 12:05: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 jp@MDK:~/tmpfs ssh$;-))
-
-
c super sa marche à merveille merci pour votre disponibilité thanks
-
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-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed};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
pour avoir a peu prés
internal;{internal,push_sup,invalid_sql_tables};2008-10-15 1 fois par semaine
externaliser;{internal,session_navigation,session_crashed} 0 fois par semaine
internal;{internal,push_sup,invalid_sql_tables};2008-10-15 2 fois le mois
externaliser;{internal,session_navigation,session_crashed} 1 fois par semaine
thank -
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} -
Si tu veux classer, la commande sort pourrait t'aider, mais il faudrait que les dates apparaissent en début de ligne.
-
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 -
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.
-
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_crashed};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_crashed};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_crashed};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_crashed};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 LOCVoilà 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]$;-))
-
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 -
Peux-tu poster un exemple assez significatif, avant => après, de ce que tu veux s'il te plaît, merci.
-
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-10-17 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;externaliser;{internal,session_navigation,session_crashed};2008-03-30 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;toto;{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_crashed};2008-05-03 12:05:08 LOC;2008-10-15 12:10:08 LOC
BEGIN;tata;{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_crashed};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_crashed};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
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 -
sort -u -t ";" -k2 fichier | awk -F";" '{ print $2 }' | uniq -c -
sa marche à merveille merci pour votre disponibilité
best regards