2010-09-03 14 views
5

jak znaleźć ile linii mam w pliku przez SED (trzeba ignorować spacje i pustych linii)Jak liczyć liczbę niepustych linii w pliku za pomocą sed?

np

jeśli mam plik z 139 linii (linia może zawierać tylko jeden znak) następnie sed powinien powrócić 139

Lidia

+0

[Ta strona] (http://www.unixguide.net/unix/sedoneliner.shtml) mówi zrobić: 'sed -n '$ ='' – Seth

+0

@Seth: To jest po prostu 'wc -l', który nie ignoruje pustych linii, jak chce OP. – codaddict

+0

pokaż swój kod następnym razem! – ghostdog74

Odpowiedz

11

To jest zadanie dla grep nie sed:

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

można spróbować:

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

W tym miejscu sed drukuje tylko te wiersze, które mają co najmniej jeden znak niebędący spacją i wc zlicza te wiersze.

1

Użyj nawk zamiast sed.

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

Tutaj sed drukuje wiersze po usunięciu wszystkich linii z 0 lub więcej przestrzeni od początku do końca. wc -l to policzyć liczbę tych linii.

0

Korzystanie Perl jedno-liner:

perl -lne '$count++ if /\S/; END { print int $count }' input.file 
Powiązane problemy