ปัญหาหลักเกี่ยวกับการใช้คำสั่งเช่นhead
หรือtail
ว่าพวกเขาเป็นเชิงเส้นและไฟล์ไบนารีไม่ได้ หากพวกเขามีการขึ้นบรรทัดใหม่พวกเขามักจะไม่ถูกนำมาใช้เพื่อเป็นตัวแทนของจุดสิ้นสุดของบรรทัดและถ้าพวกเขาพวกเขาอาจเป็นเพียงส่วนหนึ่งของสตริงเช่นข้อความโปรแกรมหรือเขตข้อมูล
หากข้อมูลมีโครงสร้าง แต่อย่างใดคุณต้องคำนึงถึงสิ่งนั้นในการเลือกจุดแยกดังนั้นคุณจะไม่แยกโครงสร้างที่อยู่ตรงกลาง
หากคุณรู้จักโครงสร้างของไฟล์คุณสามารถใช้คำสั่งเช่น
dd -if input-file -of output-file ...
พร้อมตัวเลือกเพื่อคัดลอกบล็อกข้อมูลจำนวนมากที่มีขนาดเฉพาะเริ่มต้นที่การชดเชย (เพิ่มขึ้น) เฉพาะลงในไฟล์
ดูเหมือนว่าsplit
คำสั่งดังกล่าวโดย @egmont จะทำให้กระบวนการนี้เป็นแบบอัตโนมัติ แต่ดูเหมือนว่าจะเป็นแบบบรรทัดตามค่าเริ่มต้นดังนั้นคุณจะต้องระบุตัวเลือกเพิ่มเติมเช่น--bytes count
บอกขนาดไฟล์แต่ละไฟล์ให้ใหญ่ เป็น
หากคุณไม่ทราบว่ามีอะไรในไฟล์ แต่สงสัยว่ามันมีข้อมูลเชิงข้อความที่มีความหมายอย่างน้อยstrings
คำสั่งเป็นวิธีที่ดีในการตรวจสอบครั้งแรกเพื่อดูว่าคุณกำลังทำอะไรอยู่
strings -n 6 file | less
จะพบว่าตัวอักษรที่พิมพ์ได้ทั้งหมดมีความยาวอย่างน้อยหกตัวอักษรและแสดงเป็นเพจเจอร์เพื่อให้พวกเขาไม่บินผ่านบนเทอร์มินัล การใช้ตัวเลขที่มีขนาดใหญ่กว่าค่าเริ่มต้นจำนวน 4 อักขระจะช่วยกำจัดข้อมูลเล็ก ๆ น้อย ๆ ที่เพิ่งพิมพ์ได้ แต่ไม่ได้ถูกใช้ในไฟล์นั้น
หากคุณต้องสำรวจไฟล์ในรายละเอียดเพิ่มเติมด้วยตัวแก้ไขไบนารีเช่นในภายหลังhexedit
คุณจะมีจุดสังเกตที่ชี้ให้เห็นว่ามีสิ่งใดที่น่าสนใจ
strings
มีตัวเลือก - t x
ที่จะนำหน้าแต่ละสตริงที่พิมพ์โดยมีอ็อฟเซ็ตลงในไฟล์เป็นเลขฐานสิบหก (o สำหรับ octal / d สำหรับทศนิยม) เพื่อให้คุณทราบว่าจะหาได้ที่ไหนในภายหลัง แม้แต่ไฟล์ที่สั้นมาก ๆ ก็มีอะไรให้คุณเลือกมากมายเมื่อคุณต้องมองดูตัวอักษรทีละตัว
split
คำสั่ง