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
A voir également:
- Commande awk-fichier vide
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
5 réponses
Salut,
Est-il possible avec la commande awk de savoir :
- si le fichier est vide
Oui.
- si le nombre de champs est correct
Oui.
- 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 :
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.
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
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