Commande awk-fichier vide
Résolu
rico34
Messages postés
9
Statut
Membre
-
rico34 -
rico34 -
Bonjour,
Les fichiers possèdent 6 champs séparés par le séparateur ";". Le 1e champ contient un numéro de ligne de 1 à n (nombre d'enregistrements). Je suis dans une boucle avec une variable i recevant le nom du fichier
for i in a b c
...
Est-il possible avec la commande awk de savoir :
- si le fichier est vide
- si le nombre de champs est correct
- si le 1e champ recoit bien un numero incrementé (1,2,3,...)
Si ce n'est pas le cas, il y a message d'erreur.
Merci
Les fichiers possèdent 6 champs séparés par le séparateur ";". Le 1e champ contient un numéro de ligne de 1 à n (nombre d'enregistrements). Je suis dans une boucle avec une variable i recevant le nom du fichier
for i in a b c
...
Est-il possible avec la commande awk de savoir :
- si le fichier est vide
- si le nombre de champs est correct
- si le 1e champ recoit bien un numero incrementé (1,2,3,...)
Si ce n'est pas le cas, il y a message d'erreur.
Merci
Configuration: Windows XP Internet Explorer 7.0
5 réponses
-
Salut,
Est-il possible avec la commande awk de savoir :
- si le fichier est vide
Oui.awk 'END { if(NR == 0) {print "Fichier vide" }}' fichier
- si le nombre de champs est correct
Oui.awk -F";" '{ if (NF == 6) {print "Ligne "NR" nombre de champs correct" }}' fichier
- si le 1e champ recoit bien un numero incrementé (1,2,3,...)
Je suis pas sûr d'avoir tout compris là. Si le numéro du 1er champ correspond au numéro de ligne ? Si oui, essaie ça :awk -F";" ' $1 != NR { print "Ligne "NR" pas OK" }' fichier;-))
-
Bonjour,
Merci pour tes infos. C'est bien tous les controles demandés. Est il possible de les effectuer dans un seul awk. -
#! /bin/awk -f BEGIN { FS=";" } $1 != NR { print "Ligne "NR" pas OK" } { if (NF == 6) { print "Ligne "NR" nombre de champs correct" } } END { if(NR == 0) { print "Fichier vide" } };-))
-
Ok pour le shell,
Mais le bloc end ne se traite qu'une fois. Quand il y a plusieurs fichiers vides, il n'y a qu'une impression -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -