67 votes

Comment compter le nombre de lignes et de colonnes dans un fichier en utilisant bash ?

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.

1voto

Chris Koknat Points 1732

Solution Perl :

perl -ane '$maxc = $#F if $#F > $maxc; END{$maxc++; print "max columns: $maxc\nrows: $.\n"}' file

Si votre fichier d'entrée est séparé par des virgules :

perl -F, -ane '$maxc = $#F if $#F > $maxc; END{$maxc++; print "max columns: $maxc\nrows: $.\n"}' file

salida:

max columns: 5
rows: 2

-a divise automatiquement la ligne d'entrée en @F tableau
$#F est le nombre de colonnes -1
-F, séparateur de champ de , au lieu de l'espace blanc
$. est le numéro de la ligne (nombre de rangées)

0voto

EAdrianH Points 1

Une façon très simple de compter les colonnes de la première ligne en pur bash (pas d'awk, perl, ou autres langages) :

read -r line < $input_file
ncols=`echo $line | wc -w`

Cela fonctionnera si vos données sont formatées de manière appropriée.

0voto

aprodan Points 300

Le code suivant fera le travail et vous permettra de spécifier le délimiteur de champ. Ceci est particulièrement utile pour les fichiers contenant plus de 20k lignes.

awk 'BEGIN { 
  FS="|"; 
  min=10000; 
}
{ 
  if( NF > max ) max = NF; 
  if( NF < min ) min = NF;
} 
END { 
  print "Max=" max; 
  print "Min=" min; 
} ' myPipeDelimitedFile.dat

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X