Підрахунок нових рядків або повернення перевезення, але не обидва


1

Якщо я це роблю у файлі Mac, я отримую правильну кількість рядків, але я отримую подвійні рядки у файлах unix:

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

Якщо я це роблю у файлі unix, я отримую правильну кількість рядків, але нульових рядків у файлі Mac:

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

Як отримати правильну кількість рядків в одній команді незалежно від походження файлової системи (Linux, Mac, Windows)?


Маки використовують \nпочинаючи з Mac OS X 10.0 (2001). Ви справді отримуєте старовинні файли Mac \r?
Мелебій

@Melebius так, коли маємо справу з Mac версією Excel.
EcomEvo

Відповіді:


0

Я б запропонував ознайомитись з файлами, якими ви обробляєте wrt, який стиль подачі рядка використовується в них.

$ od -t x1z

буде надрукувати вміст файлу у шістнадцяткових байтах та "ASCII", шукати 0A та 0D байтів.

У мене є функція bash, яка визначається в ~ / .profile / або ~ / .bashrc, щоб допомогти у вирішенні таких питань:

функція od-crlf {
#DOC echo "od-crlf FILE - відображає вміст файлу в символах HEX w CR + LF"

  od -Ax -t x1z -w32 $ @ \
  | sed -re 's / (0a) / \ x1b [44m \ 1 \ x1b [m / g; s / (0d) / \ x1b [45m \ 1 \ x1b [m / g'
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.