Verificar os finais de linha de um texto criado por script perl

4

Estou interessado em ver o conteúdo de um arquivo de texto no modo hexadecimal.

Eu tentei :%!xxd e o problema é que eu não consigo realmente entender qual o código hexadecimal representa cada letra, e. Quando você usa um editor como o Ultra Edit ao passar o código hexadecimal, a letra correspondente é destacada.

Então, como posso fazer algo semelhante no meu caso?

Para que você tenha um contexto do meu problema, eu tenho um script perl que cria o arquivo e quero ter certeza de que cada linha termine somente com 0x0A (LF).

Por mais estranho que seja abrir o arquivo em vim e usar :set list , só consigo ver $ , mesmo que explicitamente tenha feito no script $line .= "\r\n"

    
por Jim 30.06.2014 / 08:41

2 respostas

2

Você pode tentar:

open my $fh, '>', 'test.txt'
    or die "$!";
binmode $fh;
print $fh "QWERTY\n";

Você só vê $ em vim porque, por padrão, listchars para o fim da linha contém apenas $ . De :help listchars :

'listchars' 'lcs'       string  (default "eol:$")
                        global
                        {not in Vi}
        Strings to use in 'list' mode and for the :list command.  It is a
        comma separated list of string settings.
                                                        lcs-eol
          eol:c         Character to show at the end of each line.  When
                        omitted, there is no extra character at the end of the
                        line.

Para saber o término real da linha, você pode tentar file ou cat :

$ file test.txt 
test.txt: ASCII text, with CRLF line terminators
$ cat -e test.txt 
QWERTY^M$
    
por 30.06.2014 / 09:46
0

Um meio POSIX portátil de visualizar caracteres não imprimíveis em um arquivo de texto pode ser:

sed -n l <file

Além de ser portátil, sed também terá como padrão imprimir a linha duas vezes se você evitar o -n - uma vez com caracteres não imprimíveis representados com escapes OC ou octal imediatamente seguidos por outra impressão da linha como normalmente exibição.

Você também pode fazer:

sed =\;l <file

Para separar os pares de linhas de saída por número de linha.

    
por 30.06.2014 / 16:05