Eu sei que podemos usar o dos2unix para converter entre o Windows e o encerramento da linha Unix. Gostaria de saber se existe algum comando que possa me dizer se um arquivo tem terminação de linha do 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
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
nã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.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:
enquanto que o texto do Windows ficará assim:
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.
fonte
Note, que por causa da velocidade, apenas individuais
\r
s e\n
s 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
file
não faz uma verificação completa do arquivo, enquanto esseperl
script faz. Você não mencionou em qual plataforma deseja rodar; Eu usei obash
script para testar a saída do perl, mas isso pode ser alterado para ocmd
script do Windows .Você pode apenas canalizar seu arquivo para ele.
fonte