Como mostrar os valores hexadecimais de uma linha de um arquivo grande no Unix?

3

Estou importando dados de um arquivo de texto grande para um banco de dados e estou recebendo um erro na linha X do arquivo. Se eu olhar para a linha com o visualizador menos eu não vejo nada de estranho, porque, provavelmente, a linha tem caracteres não imprimíveis. Então tentei sedar a linha e checar com um hexdump:

sed -n 2540283p 30gb_large_file.fzp | hexdump -C

novamente, nada, provavelmente, porque o sed filtrou todos os caracteres não imprimíveis.

Algum comentário como eu pude ver o que está acontecendo na linha específica de um arquivo grande em hexadecimal?

    
por arthur 10.12.2013 / 15:23

1 resposta

1

sed não deve ser "[filtrando] todos os caracteres não imprimíveis" - você não está dizendo para fazer isso. De fato, um teste simples em um arquivo binário conveniente (o kernel do FreeBSD) demonstra que este não é o caso - sed felizmente passa caracteres não imprimíveis.

Shame on you for publicly accusing poor innocent sed of doing something heinously wrong without giving it the benefit of a proper test first -- I'll leave it to your guilty conscience to come up with an appropriate act of contrition!

Se sed não está dando nenhum resultado, é porque não há nada para dar - ou essa linha não existe (talvez o arquivo termine abruptamente - Didjya verifica com wc -l ? Talvez haja um EOF lá em algum lugar não deveria ser e seu programa está abortando quando o vê?).
Também é possível que a linha em questão consista apenas em uma nova linha ou em um caractere NUL (que sed deva obedientemente retornar, mas que não seria muito útil para você em um hexdump) ...

    
por 10.12.2013 / 19:30