Salida XXD sin saltos de línea

13

¿Puedo decir xxdque no imprima ningún salto de línea en su salida y que tenga mi volcado como una línea continua?

[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
Jugoso
fuente
55
Simplemente puede usar trpara eliminar las nuevas líneas, por ejemplo... | xxd -p | tr -d \\n
don_crissti
Depende de para qué lo necesite, pero una opción útil xxdes que ignora los espacios en blanco para el reverso -rde su -pvolcado postcript / plain (o cualquier hexdump simple para el caso). p.ej. La siguiente línea se ajusta con \n, pero la salida invertida es exactamente lo que se ingresó: echo {1..14} | xxd -p | xxd -p -rproduce salida: 1 2 3 4 5 6 7 8 9 10 11 12 13 14\n - \nes delecho
Peter
1
También puede usar en hexdump -v -e '/1 "%02X"'lugar de xxd.
dirkt

Respuestas:

15

Lo que necesita es la opción -c.

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

746869732069732061206c6f6e67206c696e6520616e64207878642077696c6c207072696e74206974206173206f6e65206c696e65

Aquí hay información de la documentación :

-c cols | -cols octetos de formato cols por línea. Predeterminado 16 (-i: 12, -ps: 30, -b: 6). Máx. 256.

La documentación dice que el valor máximo para el parámetro "c" es 256, pero probé valores mayores y funcionó. Echale un vistazo:

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

Aquí vuelco un millón de bytes de / dev / random y obtengo una cadena de 2 millones + 1 caracteres. Cada byte de / dev / random está representado por 2 caracteres y el byte adicional es la nueva línea final.

Graf
fuente