Disons que j'ai un grand fichier avec de nombreuses lignes et de nombreuses colonnes. Je voudrais savoir combien de lignes et de colonnes j'ai en utilisant bash.
Réponses
Trop de publicités?Une autre solution pour compter les colonnes est de compter les séparateurs entre les colonnes. Je trouve que c'est un bon équilibre entre la brièveté et la facilité à se souvenir. Bien sûr, cela ne fonctionnera pas si vos données incluent le séparateur de colonne.
head -n1 myfile.txt | grep -o " " | wc -l
Utilisations head -n1
pour saisir la première ligne du fichier. Utilise grep -o
pour compter tous les espaces, et afficher chaque espace trouvé sur une nouvelle ligne. Utilise wc -l
pour compter le nombre de lignes.
EDIT : Comme Gaurav Tuli le fait remarquer ci-dessous, j'ai oublié de mentionner que vous devez mentalement ajouter 1 au résultat, ou sinon script ce calcul.
Si votre fichier est volumineux mais que vous êtes certain que le nombre de colonnes reste le même pour chaque ligne (et que vous n'avez pas d'en-tête), utilisez :
head -n 1 FILE | awk '{print NF}'
pour trouver le nombre de colonnes, où FICHIER est le nom de votre fichier.
Pour trouver le nombre de lignes, 'wc -l FILE' fonctionnera.
Un petit changement à la réponse de kirill_igum, et vous pouvez facilement compter le nombre de colonnes de n'importe quelle ligne que vous voulez, ce qui est la raison pour laquelle je suis venu à cette question, même si la question demande le fichier entier. (Bien que si votre fichier a les mêmes colonnes dans chaque ligne, cela fonctionne aussi bien sûr) :
head -2 file |tail -1 |tr '\t' '\n' |wc -l
Donne le nombre de colonnes de la ligne 2. Remplacez 2 par 55 par exemple pour obtenir la ligne 55.
-bash-4.2$ cat file
1 2 3
1 2 3 4
1 2
1 2 3 4 5
-bash-4.2$ head -1 file |tail -1 |tr '\t' '\n' |wc -l
3
-bash-4.2$ head -4 file |tail -1 |tr '\t' '\n' |wc -l
5
Le code ci-dessus fonctionne si votre fichier est séparé par des tabulations, comme nous le définissons à "tr". Si votre fichier a un autre séparateur, par exemple des virgules, vous pouvez toujours compter vos "colonnes" en utilisant la même astuce, en changeant simplement le caractère séparateur "t" en "," :
-bash-4.2$ cat csvfile
1,2,3,4
1,2
1,2,3,4,5
-bash-4.2$ head -2 csvfile |tail -1 |tr '\,' '\n' |wc -l
2
Pour les lignes, vous pouvez simplement utiliser wc -l file
-l
représente la ligne totale
pour les colonnes, vous pouvez simplement utiliser head -1 file | tr ";" "\n" | wc -l
Explicationhead -1 file
Saisir la première ligne de votre fichier, qui devrait être l'en-tête, et l'envoie au cmd suivant à travers le pipe.| tr ";" "\n"
tr
signifie "traduire".
Il traduira tous les ;
en un caractère de nouvelle ligne.
Dans cet exemple ;
est votre délimiteur.
Puis il envoie les données à la commande suivante.
wc -l
Compte le nombre total de lignes.
- Réponses précédentes
- Plus de réponses