ทำไมบรรทัดคำสั่งแตกต่างจาก BBEdit


0

ในอุตสาหกรรมภาพยนตร์เป็นเรื่องปกติที่จะมีไฟล์เสียง WAV ที่มีเมทาดาทาในก้อน iXML RIFF วิธีง่ายๆในการอ่านข้อมูลเมตานี้คือการเปิดไฟล์ WAV ในโปรแกรมแก้ไขข้อความเช่น BBEdit หรือ Notepad ++ หรือแม้แต่ TextEdit แต่ด้วย command-line catหรือtailใช้งานไม่ได้ฉันแค่เห็นตัวอักษรขยะ ฉันใช้ macOS 10.13 ถ้ามันสำคัญ เหตุใดจึงcatแตกต่างจากแอปแก้ไขข้อความเหล่านี้

นี่คือไฟล์ตัวอย่างโดยมี iXML อยู่ด้านล่าง: http://www.gallery.co.uk/ixml/examples/usesEntireiXMLSpec.WAV


มันเป็นไฟล์ไบนารี ใช้strings usesEntireiXMLSpec.WAVเพื่อแยกสตริงข้อความ
DavidPostill

คำตอบ:


2

เมื่อcatส่งออกไฟล์มันจะส่งออกเป็นแบบไบต์ต่อไบต์แบบไม่มีการแทนที่ช่องว่างหรือจุดหรืออักขระการแทนที่ชนิดอื่น ดังนั้นเมื่อมันส่งออกข้อมูลตัวอย่างเสียงไบนารีก่อนหน้านี้ในไฟล์. WAV บางส่วนของไบต์เหล่านั้นเกิดขึ้นเพื่อจับคู่กับรหัสควบคุมเทอร์มินัลโรงเรียนเก่าและ "escape sequences" (ลำดับของไบต์ที่ขึ้นต้นด้วยอักขระ "ESC" ซึ่งสามารถ เคยทำสิ่งต่าง ๆ เช่นเปลี่ยนข้อความหรือสีพื้นหลังล้างหน้าจอเทอร์มินัลและย้ายตำแหน่งเคอร์เซอร์ภายในหน้าจอเทอร์มินัล) เทอร์มินัลอีมูเลเตอร์ของคุณ (Terminal.app หรือ iTerm2 หรืออะไรก็ตาม) พยายามที่จะให้เกียรติรหัสควบคุมเหล่านั้นและลำดับการหลีกเลี่ยงซึ่งใช้วิธีปกติในการแสดงข้อความ

เครื่องมือที่ใช้เทอร์มินัลจำนวนมากมีตัวเลือกสำหรับให้คุณจัดการกับไฟล์ที่มีข้อมูลไบนารีบางอย่างปะปนอยู่กับข้อความ ASCII ที่พิมพ์ได้อย่างแท้จริง ตัวอย่างเช่นcatมี-vตัวเลือกเพื่อให้สามารถแทนที่ลำดับที่พิมพ์ได้แทนที่อักขระควบคุม ASCII นอกจากนี้ยังมีvis(1), od(1), hexdump(1), strings(1)และอื่น ๆ นอกจากนี้คุณยังสามารถใช้เครื่องมือเช่นsed(1), grep(1)และawk(1)พยายามที่จะดึงข้อมูล ASCII XML จากท่ามกลางข้อมูลไบนารีในไฟล์

ตัวเลือกเหล่านี้ฉันคิดว่าstrings(1)อาจเป็นคำสัญญาที่ดีที่สุดสำหรับคุณ มันจะสแกนผ่านไฟล์เพื่อค้นหาการทำงานที่ไม่ขาดตอน (สตริง) ของอักขระ ASCII ที่พิมพ์ได้ขนาดกลางถึงยาวและจะส่งออกสตริงใด ๆ ที่พบโดยอัตโนมัติ ดังนั้นเนื่องจาก XML เป็น ASCII ที่พิมพ์ได้อย่างหมดจดstrings(1)จึงควรพิมพ์ออกมาทั้งหมดในขณะที่ข้ามข้อมูลเสียงไบนารีทั้งหมด


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