Je sais que nous pouvons utiliser dos2unix pour convertir entre la terminaison de ligne Windows et Unix. Je me demande s'il existe une commande qui peut me dire si un fichier a une terminaison de ligne Windows ou Unix?
8
$ file f1 f2 f3
f1: ASCII text, with CRLF, LF line terminators
f2: ASCII text, with CRLF line terminators
f3: ASCII text
Si vous jugez nécessaire de vérifier chaque ligne du fichier, vous pouvez le faire:
$ grep -c "^M" f1 f2
f1:0
f2:3
$ wc -l f1 f2
3 f1
3 f2
6 total
Le "^ M" a été entré en utilisant Ctrl + V Ctrl + M et est le caractère ASCII de retour chariot (CR).
Ici, nous voyons que le fichier f1 a trois lignes mais pas de CR donc toutes les fins de ligne doivent être des LF solo de style Unix.
Le fichier f2 a un nombre égal de lignes et de CR, il est donc raisonnable de deviner qu'il utilise les fins de ligne CR, LF telles qu'utilisées par MSDOS et Windows.
file
ne sort pas l'état de fin de ligne s'il peut trouver une correspondance plus proche que ASCII, c'est-à-diresetup.py: a python script text executable
. Un ne semble pas trouver un indicateur pour changer ce comportement.file -m magicfile f1 f2 f3
Sous Windows, un moyen rapide de le savoir est d'ouvrir votre fichier dans le Bloc-notes. Le bloc-notes affichera les sauts de ligne uniquement sur les terminaisons de style Windows (CR + LF), et non les terminaisons Unix (LF). Ainsi, votre texte Unix ressemblera à ceci:
alors que le texte de Windows ressemblera à ceci:
Je ne connais pas très bien la plate-forme unix / linux, mais je suis sûr que vous pouvez utiliser des hacks similaires avec des programmes comme gedit ou emacs.
la source
Notez que, pour des raisons de vitesse, seuls les
\r
s et\n
s individuels sont comptés, mais ce serait un fichier assez délirant qui avait un nombre égal des deux types et pourtant n'était pas un fichier CRLF Windows ...Notez également que l'outil * nix
file
ne fait pas une analyse complète du fichier, contrairement à ceperl
script. Vous n'avez pas indiqué sur quelle plateforme vous souhaitez qu'elle s'exécute; J'ai utilisé unbash
script pour tester la sortie de perl, mais cela peut être changé encmd
script Window .Vous pouvez simplement y diriger votre fichier.
la source