Muszę uzyskać liczbę wierszy z przychodzących plików CSV.
Użyłem następującego polecenia, aby uzyskać liczbę.
wc -l filename.csv
Rozważmy plik z 1 rekordem, otrzymuję kilka plików z \*
na początku, a dla tych plików, jeśli wydam powyższe polecenie, zwraca liczbę 0
.
Dlaczego \*
na początku pliku nie rejestruje się jako zliczana linia i czy jest jakieś obejście?
linux
microsoft-excel
command-line
unix
csv
Devoloper250
źródło
źródło
Odpowiedzi:
Trikiem zapewniającym, że liczone są również nieterminiczne linie, może być:
To wydaje się liczyć wszystkie niepuste linie, ale pomija puste linie.
Należy pamiętać, że jest to raczej nieefektywne, ale prawdopodobnie nie stanowi to problemu w przypadku użycia okazjonalnego.
Inna możliwość, zlicza wszystkie linie, w tym nie zakończoną ostatnią linię:
Testowane na RHEL 6.2. YMMV.
źródło
awk
polecenie działa na OS Xwc zgłosi 0 dla plików z tylko jedną linią i bez nowej linii. Może Twoje jednoskładnikowe pliki CSV są takie? Możesz wyszukać końcowe znaki nowej linii za pomocą hexdump, np .:
Poszukaj kodu ascii 0a na końcu.
źródło