Respostas:
$ file f1 f2 f3
f1: ASCII text, with CRLF, LF line terminators
f2: ASCII text, with CRLF line terminators
f3: ASCII text
Se você achar necessário verificar todas as linhas do arquivo, faça o seguinte:
$ grep -c "^M" f1 f2
f1:0
f2:3
$ wc -l f1 f2
3 f1
3 f2
6 total
O "^ M" foi inserido usando Ctrl + V Ctrl + M e é o caractere ASCII de retorno de carro (CR).
Aqui vemos que o arquivo f1 tem três linhas, mas não há CRs; portanto, todas as terminações de linha devem ser LFs individuais no estilo Unix.
O arquivo f2 possui um número igual de linhas e CRs; portanto, é razoável supor que ele use as terminações de linha CR e LF usadas pelo MSDOS e Windows.
file -m magicfile f1 f2 f3
No Windows, uma maneira rápida de saber é abrir seu arquivo no Bloco de Notas. O bloco de notas mostrará quebras de linha apenas nas terminações no estilo do Windows (CR + LF) e não nas terminações unix (LF). Portanto, seu texto unix ficará assim:
Line1Line2Line3Line4
enquanto que o texto do Windows ficará assim:
line1
line2
line3
line4
Não estou muito familiarizado com a plataforma unix / linux, mas tenho certeza de que você pode usar hacks semelhantes em programas como gedit ou emacs.
c=($(perl -0777ne 'print $_ =~ tr/\n//; print " ";
print $_ =~ tr/\r//;'))
if ((!(c[0] + c[1]))) ;then echo no line endings
elif (( c[0] && !c[1] )) ;then echo LF
elif (( !c[0] && c[1] )) ;then echo CR
elif (( c[0] == c[1] )) ;then echo CRLF
else echo "anbigious LF ${c[0]} CR ${c[1]}"
fi
Note, que por causa da velocidade, apenas individuais \rs e \ns são contados, mas seria um arquivo muito whacky que teve um número igual de ambos os tipos, e ainda não era um arquivo do Windows CRLF ...
Observe também que a ferramenta * nix filenão faz uma verificação completa do arquivo, enquanto esse perlscript faz. Você não mencionou em qual plataforma deseja rodar; Eu usei o bashscript para testar a saída do perl, mas isso pode ser alterado para o cmdscript do Windows .
Você pode apenas canalizar seu arquivo para ele.
filenão gera status de final de linha se puder encontrar uma correspondência mais próxima que ASCII, ou sejasetup.py: a python script text executable. A não parece encontrar uma bandeira para mudar esse comportamento.