Sortie XXD sans coupure de ligne


13

Puis-je dire xxdde ne pas imprimer de sauts de ligne dans sa sortie et d'avoir mon vidage sur une seule ligne continue?

[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
Vous pouvez simplement utiliser trpour supprimer les nouvelles lignes, par exemple... | xxd -p | tr -d \\n
don_crissti

Cela dépend de ce dont vous avez besoin, mais une option pratique xxdest qu'il ignore les espaces blancs pour l'inverse -rde son vidage postcript / plain -p(ou tout autre hexdump simple d'ailleurs). par exemple. La ligne suivante se termine avec \n, mais la sortie inversée est exactement celle qui a été entrée: echo {1..14} | xxd -p | xxd -p -rproduit la sortie: 1 2 3 4 5 6 7 8 9 10 11 12 13 14\n - l' \nest à partir deecho
Peter.O

1
Vous pouvez également utiliser à la hexdump -v -e '/1 "%02X"'place de xxd.
dirkt

Réponses:


15

Vous avez besoin de l'option -c.

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

746869732069732061206c6f6e67206c696e6520616e64207878642077696c6c207072696e74206974206173206f6e65206c696e65

Voici quelques informations de la documentation :

-c cols | -cols cols format octets par ligne. Par défaut 16 (-i: 12, -ps: 30, -b: 6). 256 au maximum.

La documentation indique que la valeur maximale pour le paramètre "c" est 256, mais j'ai essayé de plus grandes valeurs et cela a fonctionné. Vérifiez-le:

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

Ici, je vide un million d'octets de / dev / random et j'obtiens une chaîne de 2 millions + 1 caractères. Chaque octet de / dev / random est représenté par 2 caractères et l'octet supplémentaire est la nouvelle ligne finale.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.