Determinar o novo caractere de linha em um arquivo de texto?

8

dado um texto, existe um programa que pode detectar qual é o novo caractere de linha, o Windows, Mac ou Linux?

Por exemplo, o texto a seguir é mostrado por less

memor: ^ M ^ Armazenamento incorreto acessível diretamente pela CPU ^ M ^ MO termo "memória" é frequentemente (mas nem sempre) associado à memória semicondutora endereçável, ou seja, circuitos integrados que consistem em transistores baseados em silício. ^ MA memória semicondutora é organizada em ^ Células Mmemory

Eu pensei que ^ M é o novo caractere de linha do Mac. Mas no emacs, procurei por Ctrl-q Ctrl-m e não encontrei nada.

Obrigado.

Tim
fonte
1
filecomando deve dar uma pista, dos2unixtambém pode ajudar.
Archemar 29/10

Respostas:

9

filerelatará finais de linha para arquivos de texto. Se você executar fileem um arquivo de texto ASCII Unix / Linux / OSX, por exemplo, ele relatará simplesmente:

$ file test.txt
test.txt: ASCII text

Se, no entanto, o arquivo tiver terminações de linha do DOS / Windows, ele informará:

test.dos: ASCII text, with CRLF line terminators

Até o OS 9, os Macs usavam CR como o final da linha. Quando apresentado com esse arquivo, filerelatará:

test.mac: ASCII text, with CR line terminators

Com o OSX, os Macs são convertidos em finais de linha padrão do Unix.

John1024
fonte
Se um arquivo de texto é uma mistura de texto do Linux, Macs e Windows. Será fileainda relatar o caractere de nova linha certo?
Tim
@ Tim Testei-o em alguns arquivos mistos e ele relatou corretamente finais mistos. Por exemplo, com todos os três tipos, foi relatado ASCII text, with CRLF, CR, LF line terminators.
John1024
Eu tentei isso e isso me deu ASCII text, with very long lines. Os terminadores são LF
wordsforthewise
Os terminadores LF são o padrão unix e linux. Se um arquivo possui terminadores LF, filenão menciona quais terminadores são usados. Veja o primeiro exemplo na resposta acima. Terminadores são mencionados apenas se o arquivo tiver terminadores não-unix. Veja o segundo e o terceiro exemplos na resposta acima. Separadamente, é provável que seu arquivo tenha uma ou mais linhas longas.
precisa saber é o seguinte
1
Sim, eu entendo. Eu apenas pensei que era engraçado dizer 'linhas muito longas'
wordsforthewise