Вихід XXD без розривів рядків


13

Чи можу я сказати, xxdщо не надруковувати жодних розривів рядків у своєму виведенні та мати свій дамп як один безперервний рядок?

[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
Ви можете просто використати trдля видалення нових рядків, наприклад... | xxd -p | tr -d \\n
don_crissti

Це залежить від того, для чого він вам потрібен, але одним зручним варіантом xxdє те, що він ігнорує пробіл для зворотного -rзв'язку свого постриптуму / простого -pдампа (або будь-якого простого гексадуму з цього приводу). напр. Наступний рядок завершується \n, але зворотний вихід - це саме те, що було введено: echo {1..14} | xxd -p | xxd -p -rвидає вихід: 1 2 3 4 5 6 7 8 9 10 11 12 13 14\n - \nце відecho
Peter.O

1
Ви також можете використовувати hexdump -v -e '/1 "%02X"'замість xxd.
dirkt

Відповіді:


15

Вам потрібен варіант -c.

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

746869732069732061206c6f6e67206c696e6520616e64207878642077696c6c207072696e74206974206173206f6e65206c696e65

Ось інформація з документації :

-c cols | -cols cols формату октетів на рядок. За замовчуванням 16 (-i: 12, -ps: 30, -b: 6). Макс 256.

Документація говорить, що максимальне значення для параметра "c" - 256, але я спробував більші значення, і воно спрацювало. Перевір:

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

Тут я скидаю один мільйон байт з / dev / random і отримую рядок у 2 мільйони + 1 символів. Кожен байт від / dev / random представлений двома символами, а додатковий байт - остаточним новим рядком.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.