2010-09-03 3 views
5

wie zu finden, wie viele Zeilen, die ich von sed (müssen Räume und Leerzeilen ignorieren) in der Datei habenWie die Anzahl der nicht leeren Zeilen in einer Datei mit sed zu zählen?

zum Beispiel

wenn ich Datei mit 139 Linien (Linie nur ein Zeichen enthalten) sed sollte dann wieder 139

lidia

+0

[Diese Seite] (http://www.unixguide.net/unix/sedoneliner.shtml) sagt zu tun: 'sed -n '$ ='' – Seth

+0

@Seth: Das ist nur 'wc -l', die Leerzeilen nicht ignoriert, wie OP will. – codaddict

+0

zeigen Sie Ihren Code das nächste Mal! – ghostdog74

Antwort

11

Dies ist ein Job für grep, nicht sed:

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

Sie können versuchen:

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

Hier sed druckt nur die Zeile, die mindestens ein Nicht-Leerzeichen-Zeichen haben und wc zählt diese Zeilen.

1

Verwenden Sie nawk statt sed.

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

Hier sed druckt die Linien nach bis zum Ende aller Zeilen mit 0 oder mehr Leerzeichen vom Anfang zu löschen. wc -l zählt die Anzahl dieser Zeilen.

0

Mit Perl Einzeiler:

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