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
новых
Это зависит от того, для чего он вам нужен, но одна из удобных опций xxdзаключается в том, что он игнорирует пробелы для обратной -rстороны своего постскриптумного / простого -pдампа (или любого простого hexdump в этом отношении). например. Следующая строка переносится \n, но обратный вывод - это именно то, что было echo {1..14} | xxd -p | xxd -p -r1 2 3 4 5 6 7 8 9 10 11 12 13 14\n\necho
введено
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 форматируют октеты на строку. По умолчанию 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 представлен 2 символами, а дополнительный байт является последним символом новой строки.

Graf
источник