it-swarm-eu.dev

Come contare le linee in un documento?

Ho linee come queste e voglio sapere quante linee ho effettivamente ...

09:16:39 AM  all    2.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   94.00
09:16:40 AM  all    5.00    0.00    0.00    4.00    0.00    0.00    0.00    0.00   91.00
09:16:41 AM  all    0.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:42 AM  all    3.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:43 AM  all    0.00    0.00    1.00    0.00    1.00    0.00    0.00    0.00   98.00
09:16:44 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
09:16:45 AM  all    2.00    0.00    6.00    0.00    0.00    0.00    0.00    0.00   92.00

C'è un modo per contarli tutti usando i comandi di linux?

917
Alucard

Usa wc:

wc -l <filename>

Questo produrrà il numero di righe in <filename>:

$ wc -l /dir/file.txt
3272485 /dir/file.txt

Oppure, per omettere <filename> dal risultato utilizzare wc -l < <filename>:

$ wc -l < /dir/file.txt
3272485

È anche possibile reindirizzare i dati a wc:

$ cat /dir/file.txt | wc -l
3272485
$ curl yahoo.com --silent | wc -l
63
1724
user85509

Per contare tutte le linee usano:

$ wc -l file

Per filtrare e contare solo le linee con motivo di utilizzo:

$ grep -w "pattern" -c file  

Oppure usa -v per invertire la corrispondenza:

$ grep -w "pattern" -c -v file 

Vedi la pagina di grep man per dare un'occhiata al -e, -i e -x args ...

130
Lauro Oliveira
wc -l <file.txt>

O

command | wc -l
67
John Kugelman

ci sono molti modi. usare wc è uno.

wc -l file

altri includono

awk 'END{print NR}' file

sed -n '$=' file (GNU sed)

grep -c ".*" file
42
ghostdog74

Lo strumento wc è il "Contatore di parole" nei sistemi operativi UNIX e UNIX, puoi anche usarlo per contare le righe in un file, aggiungendo l'opzione -l, così wc -l foo conterà il numero di righe in foo. È inoltre possibile reindirizzare l'output da un programma come questo: ls -l | wc -l, che indica il numero di file presenti nella directory corrente.

25
theunamedguy

Se si desidera verificare la linea totale di tutti i file in una directory, è possibile utilizzare find e wc:

find . -type f -exec wc -l {} +
22
storen

Usa wcname__:

wc -l <filename>
21
Vivin Paliath

Se tutto ciò che si desidera è il numero di righe (e non il numero di righe e lo stupido nome del file che ritorna):

wc -l < /filepath/filename.ext

Come accennato in precedenza anche questi funzionano (ma sono inferiori per altri motivi):

awk 'END{print NR}' file       # not on all unixes
sed -n '$=' file               # (GNU sed) also not on all unixes
grep -c ".*" file              # overkill and probably also slower
14
ggb667

Sto usando questo:

cat myfile.txt | wc -l

Preferisco la risposta accettata perché non stampa il nome del file e non è necessario utilizzare awk per correggerlo. Risposta accettata:

wc -l myfile.txt

Ma penso che la migliore sia la risposta di GGB667:

wc -l < myfile.txt

Probabilmente lo userò d'ora in poi. È leggermente più corto del mio modo. Sto mettendo su il mio vecchio modo di farlo nel caso in cui qualcuno lo preferisca. L'output è lo stesso con questi due metodi.

7
Buttle Butkus

Usa nl in questo modo:

nl filename

Da man nl:

Scrivi ogni FILE sullo standard output, con i numeri di riga aggiunti. Senza FILE, o quando FILE è -, leggi lo standard input.

7
decimal

Ho visto questa domanda mentre cercavo un modo per contare più righe di file, quindi se vuoi contare più file di un file .txt puoi farlo,

cat *.txt | wc -l

verrà eseguito anche su un file .txt;)

5
talsibony

Sopra sono il metodo preferito ma anche il comando "cat" può essere utile:

cat -n <filename>

Ti mostrerà tutto il contenuto del file con i numeri di riga.

5
Yogesh
wc -l file.txt | cut -f3 -d" "

Restituisce solo il numero di righe

4
Umur Kontacı
cat file.log | wc -l | grep -oE '\d+'
  • grep -oE '\d+': per restituire i numeri delle cifre SOLO.
4
AechoLiu

Reindirizzamento/Piping l'output del file su wc -l dovrebbe essere sufficiente, come il seguente:

cat /etc/fstab | wc -l

che poi fornirebbe il no. solo di linee.

3
tk3000

Oppure conta tutte le linee in sottodirectory con un modello di nome file (ad esempio file di log con data/ora nel nome del file):

wc -l ./**/*_SuccessLog.csv
2
jwebuser

So che questo è vecchio ma ancora: Conteggio righe filtrate

Il mio file ha il seguente aspetto:

Number of files sent
Company 1 file: foo.pdf OK
Company 1 file: foo.csv OK
Company 1 file: foo.msg OK
Company 2 file: foo.pdf OK
Company 2 file: foo.csv OK
Company 2 file: foo.msg Error
Company 3 file: foo.pdf OK
Company 3 file: foo.csv OK
Company 3 file: foo.msg Error
Company 4 file: foo.pdf OK
Company 4 file: foo.csv OK
Company 4 file: foo.msg Error

Se voglio sapere quanti file vengono inviati OK:

grep "OK" <filename> | wc -l

OR

grep -c "OK" filename

Ho appena creato un programma per farlo (con node)

npm install gimme-lines
gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html

https://github.com/danschumann/gimme-lines/tree/master

1
Funkodebat

conta il numero di righe e il risultato del negozio in variabile usa questo comando:

count=$(wc -l < file.txt) echo "Number of lines: $count"

1
Konstantin F

Come altri hanno detto che wc -l è la soluzione migliore, ma per riferimento futuro è possibile utilizzare Perl:

Perl -lne 'END { print $. }'

$. contiene il numero di riga e il blocco END verrà eseguito alla fine dello script.

0
Majid Azimi