2010-09-03 4 views
5

comment trouver le nombre de lignes que j'ai dans le fichier par sed (besoin d'ignorer les espaces et les lignes vides)Comment compter le nombre de lignes non vides dans un fichier en utilisant sed?

par exemple

si je fichier avec 139 lignes (la ligne ne peut comporter qu'un seul caractère) alors sed devrait retourner 139

Lidia

+0

[Cette page] (http://www.unixguide.net/unix/sedoneliner.shtml) dit de faire: 'sed -n '$ ='' – Seth

+0

@Seth: C'est juste 'wc -l' qui n'ignore pas les lignes vides comme OP veut. – codaddict

+0

montrez votre code la prochaine fois! – ghostdog74

Répondre

11

C'est un travail pour grep, non sed:

<myfile grep -c '[^[:space:]]' 
3

Vous pouvez essayer:

sed -n '/[^[:space:]]/p' filename | wc -l 

Ici, sed imprime uniquement les lignes ayant au moins un caractère non-espace et wc compte ces lignes.

1

Utiliser nawk au lieu de sed.

nawk 'NF{c++}END{print "total: "c}' file 
0
sed '/^ *$/ d' filename | wc -l 

Ici, sed imprime les lignes après la suppression de toutes les lignes avec 0 ou plusieurs espaces du début à la fin. wc -l est de compter le nombre de ces lignes.

0

L'utilisation de Perl one-liner:

perl -lne '$count++ if /\S/; END { print int $count }' input.file 
Questions connexes