Jak policzyć, ile wierszy jest w pliku tekstowym. np .:
command file.txt
Uwaga: chcę liczyć tylko niepuste linie (linie bez liczenia białych znaków i tabulatorów) ?.
command-line
użytkownik93097373
źródło
źródło
\r
), czy je pomijać. Bieżące odpowiedzi obejmują wszystkie wiersze ze spacjami i pomijają tylko puste.\r
lub\n
), linii z tylko tabulatorami i linii z tylko spacjami) i chcę je pomijać tak, jak myślę i odpowiadam zgodnie z Co ja zrozumiałem.Odpowiedzi:
Powyższe odpowiedzi są poprawne, ale nieco inne, możesz użyć
grep
do dla łatwiejszego kodu takiegogrep -vc '^$' file.txt
Na przykład (A): file.txt
Na przykład (B): plik.txt
Zauważ, że wynik to 4! kiedy chcemy spodziewać się tylko dwóch. ale to także uwzględnia zakładki między treścią a komentarzem.
Zwróć uwagę na zliczanie od 0 i od 1 różni się od grep do sed, ponieważ pamiętam, że po więcej szczegółów szukaj grep lub sed.
źródło
sed
opcja jest właściwie poprawna, alegrep
ta nie jestSpróbuj
sed
:Jeśli masz jakieś wiersze zawierające tylko spacje lub tabulatory i jeśli chcesz je również zignorować z licznika:
źródło
^\s*$
również wziąć pod uwagę wiersze zawierające tylko tabulatory lub spacje.Używanie
grep
:źródło
Możesz użyć:
Jeśli potrzebujesz do tego polecenia, po prostu wklej następujące wiersze do swojego
.bashrc
i zrestartuj sesję powłoki lub otwórz nowy terminal:Przykład:
źródło
Z awk :
Wyjaśnienie:
NF
Oznacza całkowitą liczbę pól, i stąd ten drukuje tylko nie puste wiersze , ponieważ w nie pustych wierszyNF
jest większa0
, a wartość true. Więc zwiększ flagę count, gdy awk znalazł niepuste linie i wypisz ostatnią wartość flagi count na końcu oEND{print count}
.źródło
Edycja : możesz po prostu dodać
c
opcjęgrep
zamiastwc
przesyłać wszystko do , zobacz odpowiedź @ muru na bardziej kompaktową wersjęZ
grep
:źródło
Rozwiązanie Perla
Perl może to zrobić. Ogólnie rzecz biorąc linie liczące działają w następujący sposób:
Jeśli chcemy wykluczyć wszystkie puste linie, zrobimy coś takiego:
Powiedzmy, że mamy taki plik wejściowy
Łącznie jest 5 linii, 2 puste linie. Polecenie, które mamy, wypisze:
Ulepszenie wielu plików
Działa to dobrze dla pojedynczego pliku. Jeśli chcemy, aby działał na wielu plikach, możemy zrobić coś takiego:
źródło