2013-09-02 13 views

Odpowiedz

32

Wyrażenie regularne pasujące do końca linii jest $, a nie \n (od grep działa po linii, ignoruje znaki nowej linii między wierszami).

grep -c '^$' myfile.txt 
+0

OK. Rozumiem. Nie wiem, że grep ignoruje nowe linie między liniami. Dzięki!! –

+3

Aby być precyzyjnym, '$' jest znakiem RE dopasowanym do końca ciągu, a nie do końca linii. grep po prostu traktuje każdy wiersz wejściowy jako osobny ciąg, tak więc grep kończy się na każdym końcu łańcucha ('$'), gdzie linia się zakończyła, ale inne narzędzia zachowują się inaczej. '$' zawsze oznacza 'koniec ciągu' we wszystkich narzędziach. –

+1

@EdMorton W kontekstach, w których nie może być wielu linii, EOL i EOS są równoważne. Wszystko, co przetwarza tylko jedną linię na raz, jest tym kontekstem. – Barmar

3

grep i liczyć puste linie takie jak to:

grep -c "^$" myfile.txt 

Jak \n jest uważany za koniec linii trzeba użyć linia początek i koniec linii "^$"

+0

Dzięki! Pomogło. –

Powiązane problemy