Liczenie nowych linii lub zwrotów karetki, ale nie jedno i drugie

1

Jeśli zrobię to na pliku Mac, otrzymam prawidłową liczbę linii, ale podwoję linie w plikach unix:

cat /path/to/file.txt | tr '\r' '\n' | wc -l

Jeśli zrobię to w pliku unix, otrzymam prawidłową liczbę linii, ale zero linii w pliku Mac:

cat /path/to/file.txt | wc -l

Jak uzyskać prawidłową liczbę wierszy w jednym poleceniu bez względu na pochodzenie systemu plików (Linux, Mac, Windows)?

EcomEvo
źródło
Używanie komputerów Mac \npocząwszy od Mac OS X 10.0 (2001). Czy naprawdę masz starożytne pliki Mac \r?
Melebius
@ Melebius tak, w przypadku wersji Excela dla komputerów Mac.
EcomEvo

Odpowiedzi:

0

Sugeruję sprawdzenie plików, które obsługujesz, w którym stylu linii jest używany.

$ od -t x1z

wypisze zawartość pliku w bajtach szesnastkowych i „ASCII”, szuka bajtów 0A i 0D.

Mam funkcję bash, która jest definiowana w ~ / .profile / lub ~ / .bashrc, aby pomóc w tego rodzaju problemach:

funkcja od-crlf {
#DOC echo "PLIK-od-crlf - wyświetla zawartość pliku w znakach HEX w CR + LF podkreślone"

  od -Ax -t x1z -w32 $ @ \
  | sed -re 's / (0a) / \ x1b [44m \ 1 \ x1b [m / g; s / (0d) / \ x1b [45m \ 1 \ x1b [m / g ”
}
Hannu
źródło