2010-09-03 3 views
5

come trovare quante linee ho in file sed (necessità di ignorare gli spazi e le righe vuote)Come contare il numero di linee non vuote in un file usando sed?

ad esempio

se ho file con 139 linee (linea può includere un solo carattere) poi sed dovrebbe restituire 139

lidia

+0

[In questa pagina] (http://www.unixguide.net/unix/sedoneliner.shtml) dice di fare: 'sed -n '$ ='' – Seth

+0

@Seth: Questo è solo 'wc -l' che non ignora le righe vuote come OP desidera. – codaddict

+0

mostra il tuo codice la prossima volta! – ghostdog74

risposta

11

Questo è un lavoro per grep, non sed:

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

si può provare:

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

Qui sed stampa solo quelle linee che hanno almeno un carattere non spaziale e wc conta quelle righe.

1

Utilizzare nawk invece di sed.

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

Qui, sed stampe le righe dopo l'eliminazione di tutte le linee con 0 o più spazi dall'inizio alla fine. wc -l significa contare il numero di queste linee.

0

Utilizzo di Perl one-liner:

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