Saída XXD sem quebras de linha


12

Posso dizer xxdpara não imprimir nenhuma quebra de linha na saída e ter meu despejo como uma linha contínua?

[user@localhost] : ~ $ echo -n "this is a long line and xxd is going to take multiple lines to print it" | xxd -p
746869732069732061206c6f6e67206c696e6520616e6420787864206973
20676f696e6720746f2074616b65206d756c7469706c65206c696e657320
746f207072696e74206974

5
Você pode simplesmente usar trpara excluir as novas linhas, por exemplo:... | xxd -p | tr -d \\n
don_crissti

Depende do que você precisa, mas uma opção útil xxdé que ele ignore o espaço em branco para o reverso -rde seu postcript / -pdump simples (ou qualquer hexdump simples para esse assunto). por exemplo. A linha a seguir envolve \n, mas a saída reversa é exatamente o que foi inserido: echo {1..14} | xxd -p | xxd -p -rproduz saída: 1 2 3 4 5 6 7 8 9 10 11 12 13 14\n - the \nis from theecho
Peter.O.

1
Você também pode usar em hexdump -v -e '/1 "%02X"'vez de xxd.
dirkt 10/10

Respostas:


14

O que você precisa é a opção -c.

# echo -n "this is a long line and xxd will print it as one line" | xxd -p -c 1000000

746869732069732061206c6f6e67206c696e6520616e64207878642077696c6c207072696e74206974206173206f6e65206c696e65

Aqui estão algumas informações da documentação :

-c cols | -cols cols formato octetos por linha. Padrão 16 (-i: 12, -ps: 30, -b: 6). 256 máx.

A documentação diz que o valor máximo para o parâmetro "c" é 256, mas tentei valores maiores e funcionou. Confira:

# xxd -c 1000000 -p -l 1000000 /dev/urandom | wc -c
2000001

Aqui eu despejo um milhão de bytes de / dev / random e recebo uma sequência de 2 milhões + 1 caracteres. Cada byte de / dev / random é representado por 2 caracteres e o byte adicional é a nova linha final.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.