Couper des champs particuliers du fichier texte
Résolu/Fermé
rimrita
Messages postés
18
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
15 avril 2014
-
10 avril 2014 à 12:33
rimrita Messages postés 18 Date d'inscription lundi 31 mars 2014 Statut Membre Dernière intervention 15 avril 2014 - 11 avril 2014 à 14:35
rimrita Messages postés 18 Date d'inscription lundi 31 mars 2014 Statut Membre Dernière intervention 15 avril 2014 - 11 avril 2014 à 14:35
A voir également:
- Couper des champs particuliers du fichier texte
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Sites de vente entre particuliers - Guide
- Ouvrir fichier .bin - Guide
7 réponses
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 623
10 avril 2014 à 13:24
10 avril 2014 à 13:24
hello
awk permet des tests sur le contenu d'un champ
awk permet des tests sur le contenu d'un champ
$ awk -F : '{$9 ~ /relay/? x=$9: x=""; print $1, $2, $3, $4, $5, $7, $8, x}' fichier
rimrita
Messages postés
18
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
15 avril 2014
10 avril 2014 à 15:40
10 avril 2014 à 15:40
cela m'a supprimer les séparateurs du fichier !!
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 623
Modifié par dubcek le 10/04/2014 à 15:55
Modifié par dubcek le 10/04/2014 à 15:55
essayer avec
awk 'BEGIN {FS=OFS=":"} {$9 ~/relay/? x=$9:x=""; print $1,$2,$3,$4,$5,$7,$8,x}' fichierou avec
awk 'BEGIN {FS=OFS=":"} {$9 ~/relay/? x=OFS $9:x=""; print $1,$2,$3,$4,$5,$7,$8 x}' fichierpas de : en fin de ligne
rimrita
Messages postés
18
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
15 avril 2014
10 avril 2014 à 17:11
10 avril 2014 à 17:11
celà m'a multiplié les séparateurs
la premiére * 3
la deuxiéme *2
la premiére * 3
la deuxiéme *2
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 623
Modifié par dubcek le 11/04/2014 à 08:36
Modifié par dubcek le 11/04/2014 à 08:36
explique !
il y a des champs vides?
il y a des champs vides?
$ awk 'BEGIN {FS=OFS=":"} {$9 ~/relay/? x=OFS $9:x=""; print $1,$2,$3,$4,$5,$7,$8 x}' fichier
Mar:2:05:14:10:RRRRRRRRR:client=unknown[***.***.***.***]
Mar:2:05:14:10:RRRRRRRRR:from=<rita@999>
Mar:2:05:14:11:RRRRRRRRRR:to=<000@rita>:relay=****.****.**.***[1***.***.**.***]
$
rimrita
Messages postés
18
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
15 avril 2014
11 avril 2014 à 12:08
11 avril 2014 à 12:08
Non tous les champs sont attachés et séparés par ":"
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
11 avril 2014 à 12:12
11 avril 2014 à 12:12
Salut,
Un brin de courtoisie dans tes réponses ne serait pas superflu(e), ainsi que quelques explications sur l'origine de tes fichiers et des exemples concrets avec copier/coller.
Merci.
Un brin de courtoisie dans tes réponses ne serait pas superflu(e), ainsi que quelques explications sur l'origine de tes fichiers et des exemples concrets avec copier/coller.
Merci.
rimrita
Messages postés
18
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
15 avril 2014
11 avril 2014 à 12:16
11 avril 2014 à 12:16
mon fichier est un fichier log, j'ai réussi à extrarire la date l'id ,client le from et to. avec
cut -d: -f1,2,3,4,5,7,8 mais pour le relay si j'ajoute sa position, les données qui sont pas sur la meme ligne et sur la meme position s'affichent.
cut -d: -f1,2,3,4,5,7,8 mais pour le relay si j'ajoute sa position, les données qui sont pas sur la meme ligne et sur la meme position s'affichent.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
11 avril 2014 à 12:19
11 avril 2014 à 12:19
Avec l'exemple donné dans ton 1er post, la commande de dubcek marche parfaitement, preuve s'il en est dans sa réponse #6. J'ai aussi fait le test chez moi et le résultat est le même.
Donc, c'est avec ton fichier original qu'il y a un problème. C'est un fichier de log issu de Windows ou de Linux ?
Donc, c'est avec ton fichier original qu'il y a un problème. C'est un fichier de log issu de Windows ou de Linux ?
rimrita
Messages postés
18
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
15 avril 2014
11 avril 2014 à 12:21
11 avril 2014 à 12:21
mon fichier est issu du linux
rimrita
Messages postés
18
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
15 avril 2014
11 avril 2014 à 12:28
11 avril 2014 à 12:28
le probléme avec la derniére proposition le size s'affiche
rimrita
Messages postés
18
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
15 avril 2014
11 avril 2014 à 12:51
11 avril 2014 à 12:51
je peut pas poster copier coller car c'est confidentiel , j'ai remplacer les valeurs par des "*" et des "0" j'ai respercter le nombre de caractéres alors pour fichier initial comme ça:
avec la commande
$ awk 'BEGIN {FS=OFS=":"} {$9 ~/relay/? x=OFS $9:x=""; print $1,$2,$3,$4,$5,$7,$8 x}' tmp
la resultat est:
Mar:2:08:27:34:client=unknown[***.***.***.***]:sasl_method=LOGIN
Mar:2:08:27:34: from=<rimrita@rimrita>:size=222222
Mar:2:08:27:35: to=<rita.rim@gmail.com>:relay=***.***.**.***[***.***.**.***]
::::::
Mar:2:08:27:34:client=unknown[***.***.***.***]:sasl_method=LOGIN
Mar:2:08:27:34: from=<rimrita@rimrita>:size=222222
Mar:2:08:27:35: to=<rita.rim@gmail.com>:relay=***.***.**.***[***.***.**.***]
::::::
avec la commande
$ awk 'BEGIN {FS=OFS=":"} {$9 ~/relay/? x=OFS $9:x=""; print $1,$2,$3,$4,$5,$7,$8 x}' tmp
la resultat est:
Mar:2:08:27:34:client=unknown[***.***.***.***]:sasl_method=LOGIN
Mar:2:08:27:34: from=<rimrita@rimrita>:size=222222
Mar:2:08:27:35: to=<rita.rim@gmail.com>:relay=***.***.**.***[***.***.**.***]
::::::
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 623
Modifié par dubcek le 11/04/2014 à 13:09
Modifié par dubcek le 11/04/2014 à 13:09
ne pas afficher une ligne dont les champs sont vides ?
$ awk 'BEGIN {FS=OFS=":"} $1 && $2 {$9 ~/relay/? x=OFS $9:x=""; print $1,$2,$3,$4,$5,$7,$8 x}' fichier
Mar:2:08:27:34:sasl_method=LOGIN:
Mar:2:08:27:34:size=222222:
Mar:2:08:27:35:relay=***.***.**.***[***.***.**.***]:
rimrita
Messages postés
18
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
15 avril 2014
11 avril 2014 à 13:11
11 avril 2014 à 13:11
dsl mon fichier de départ est j'ai copier 2 fois le fichier resultat mon fichier de départ est donc:
Mar:2:08:27:34:*********:client=unknown[***.***.***.***]:sasl_method=LOGIN:sasl_username=rima
Mar:2:08:27:34:*********: from=<rimrita@rimrita>:size=222222:nrcpt=1 (queue active)
Mar:2:08:27:35:*********: to=<rita.rim@gmail.com>:relay=***.***.**.***[***.***.**.***]:25:delay=0.82: delays=0.00/0.00/0.00/0.00:dsn=2.0.0:status=sent (*** 2.0.0 Ok: queued as ***********)
Mar:2:08:27:34:*********:client=unknown[***.***.***.***]:sasl_method=LOGIN:sasl_username=rima
Mar:2:08:27:34:*********: from=<rimrita@rimrita>:size=222222:nrcpt=1 (queue active)
Mar:2:08:27:35:*********: to=<rita.rim@gmail.com>:relay=***.***.**.***[***.***.**.***]:25:delay=0.82: delays=0.00/0.00/0.00/0.00:dsn=2.0.0:status=sent (*** 2.0.0 Ok: queued as ***********)
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 623
11 avril 2014 à 13:25
11 avril 2014 à 13:25
ou est le problème ?
$ awk 'BEGIN {FS=OFS=":"} {$9 ~/relay/? x=OFS $9:x=""; print $1,$2,$3,$4,$5,$7,$8 x}' fichier2
Mar:2:08:27:34:client=unknown[***.***.***.***]:sasl_method=LOGIN
Mar:2:08:27:34: from=<rimrita@rimrita>:size=222222
Mar:2:08:27:35: to=<rita.rim@gmail.com>:relay=***.***.**.***[***.***.**.***]
$
rimrita
Messages postés
18
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
15 avril 2014
11 avril 2014 à 13:27
11 avril 2014 à 13:27
le probléme c'est que j'ai pas besoin des champs:
sasl_method=LOGIN
et
size=222222
sasl_method=LOGIN
et
size=222222
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 623
11 avril 2014 à 14:22
11 avril 2014 à 14:22
comme ca ?
$ awk 'BEGIN {FS=OFS=":"} {$8 ~/relay/? x=OFS $8:x=""; print $1,$2,$3,$4,$5,$7 x}' fichier
Mar:2:08:27:34:client=unknown[***.***.***.***]
Mar:2:08:27:34: from=<rimrita@rimrita>
Mar:2:08:27:35: to=<rita.rim@gmail.com>:relay=***.***.**.***[***.***.**.***]