6 votes

Utilisation de grep sur des fichiers texte au format Mac

Quand j'exécute grep sur un fichier texte, j'obtiens des résultats sans sens. Il semble que tout le fichier soit imprimé sur une seule ligne en s'écrivant par-dessus. J'ai lu que sur Mac, les fichiers texte utilisent \r au lieu du \n normal comme fin de ligne. Cela expliquerait cela, mais comment faire en sorte que grep traite \r comme s'il s'agissait de \n?

J'utilise Snow Leopard OS X, et je suis assez nouveau dans l'utilisation des produits Apple, mais je suis programmeur Linux de longue date.

9voto

Xavier Nodet Points 2498

Vous ne pouvez pas modifier le comportement de grep, mais vous pouvez modifier le fichier qu'il voit:

tr '\r' '\n' 

``

De plus, les fins de ligne \r sont obsolètes de nos jours; OS X utilise officiellement \n, bien qu'il reste des choses qui n'ont pas été mises à jour. En particulier, AppleScript n'a pas encore tout à fait rattrapé son retard, ce qui se voit également dans son utilisation par défaut des chemins de fichiers pré-OS X et en exigeant POSIX file pour indiquer les chemins natifs d'OS X; de plus, de nombreuses applications Carbon utilisent toujours \r, Carbon étant un framework de transition de Mac OS 9 à OS X.

``

1voto

Viktor Haag Points 1707

Un utilitaire hérité courant pour gérer les fins de ligne est flip. Il effectue une transformation sur place pour les fichiers entre les formats de fin de ligne Unix, DOS/Windows, legacy Mac, et peut également échantillonner un fichier pour vous indiquer quel type il pense actuellement être. Il n'est pas livré avec OSX, mais vous pouvez obtenir les binaires à partir du lien ainsi que la source.

Dans ce cas, vous pouvez d'abord flip -u yourFile.txt pour vous assurer qu'il utilise des sauts de ligne et non des sauts de ligne pour délimiter les lignes, puis utiliser grep dessus.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X