เอาต์พุต 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โอนข้อมูล postcript / plain (หรือ hexdump ธรรมดาสำหรับเรื่องนั้น) เช่น. บรรทัดต่อไปนี้ล้อมรอบด้วย\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 รูปแบบ octets ต่อบรรทัด ค่าเริ่มต้น 16 (-i: 12, -ps: 30, -b: 6) สูงสุด 256

เอกสารอธิบายว่าค่าสูงสุดสำหรับพารามิเตอร์ "c" คือ 256 แต่ฉันลองใช้ค่าที่มากกว่าและใช้งานได้ ลองดูสิ:

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

ที่นี่ฉันทิ้งหนึ่งล้านไบต์จาก / dev / สุ่มและฉันได้รับสตริง 2 ล้าน + 1 ตัวอักษร แต่ละไบต์จาก / dev / สุ่มจะถูกแทนด้วย 2 ตัวอักษรและไบต์เพิ่มเติมเป็นขึ้นบรรทัดสุดท้าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.