Compter les nouvelles lignes ou les retours chariots mais pas les deux

0

Si je fais cela sur un fichier Mac, j'obtiens le nombre correct de lignes mais je double les lignes sur les fichiers Unix:

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

Si je fais cela sur un fichier Unix, j'obtiens le nombre correct de lignes mais aucune ligne sur un fichier Mac:

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

Comment obtenir le nombre correct de lignes dans une seule commande, quelle que soit l'origine du système de fichiers (Linux, Mac, Windows)?

EcomEvo
la source
Les Mac utilisent à \npartir de Mac OS X 10.0 (2001). Avez-vous vraiment obtenir d'anciens fichiers Mac avec \r?
Melebius
@ Melebius oui, lorsqu'il s'agit d'une version Excel d'Excel.
EcomEvo

Réponses:

0

Je suggérerais d'inspecter les fichiers que vous traitez en fonction du style de saut de ligne utilisé.

$ od -t x1z

va imprimer le contenu du fichier en octets hexadécimaux et "ASCII", rechercher les octets 0A et 0D.

J'ai une fonction bash qui est définie dans ~ / .profile / ou ~ / .bashrc pour aider avec ce genre de problèmes:

fonction od-crlf {
#DOC echo "od-crlf FILE - affiche le contenu du fichier en caractères HEX w CR + LF accentués"

  od -Ax -t x1z -w32 $ @ \
  | sed -re '/ (0a) / \ x1b [44m \ 1 \ x1b [m / g; s / (0d) / \ x1b [45m \ 1 \ x1b [m / g'
}
Hannu
la source