Output XXD tanpa jeda baris

12

Bisakah saya katakan xxduntuk tidak mencetak jeda baris dalam outputnya dan memiliki dump saya sebagai satu garis kontinu?

[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
Berair
sumber
5
Anda cukup menggunakan truntuk menghapus baris baru, misalnya... | xxd -p | tr -d \\n
don_crissti
Itu tergantung pada apa yang Anda butuhkan, tetapi satu opsi praktis xxdadalah bahwa ia mengabaikan spasi putih untuk kebalikan -rdari postkrip / -pdump biasa (atau hexdump polos dalam hal ini). misalnya. Baris berikut ini dibungkus dengan \n, tetapi output terbalik adalah apa yang diinput: echo {1..14} | xxd -p | xxd -p -rmenghasilkan keluaran: 1 2 3 4 5 6 7 8 9 10 11 12 13 14\n - \nis from theecho
Peter.O
1
Anda juga dapat menggunakan hexdump -v -e '/1 "%02X"'bukan xxd.
dirkt

Jawaban:

14

Yang Anda butuhkan adalah opsi -c.

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

746869732069732061206c6f6e67206c696e6520616e64207878642077696c6c207072696e74206974206173206f6e65206c696e65

Berikut ini beberapa info dari dokumentasi :

-c cols | oktol cols format cols per baris. Default 16 (-i: 12, -ps: 30, -b: 6). Maks 256.

Dokumentasi mengatakan bahwa nilai maksimum untuk parameter "c" adalah 256, tetapi saya mencoba nilai yang lebih besar dan itu berhasil. Coba lihat:

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

Di sini saya membuang satu juta byte dari / dev / acak dan saya mendapatkan string 2 juta +1 karakter. Setiap byte dari / dev / random diwakili oleh 2 karakter dan byte tambahan adalah baris terakhir.

Graf
sumber