Khi cat
xuất tệp, nó xuất ra byte theo từng byte mà không thay thế khoảng trắng hoặc dấu chấm hoặc một số loại ký tự thay thế khác. Vì vậy, khi nó xuất dữ liệu mẫu âm thanh nhị phân sớm hơn trong tệp .WAV, một số byte đó xảy ra khớp với mã điều khiển đầu cuối trường cũ và "chuỗi thoát" (chuỗi byte bắt đầu bằng ký tự "ESC", có thể là Được sử dụng để làm những việc như thay đổi văn bản hoặc màu nền, xóa màn hình đầu cuối và định vị lại con trỏ trong màn hình đầu cuối). Trình giả lập thiết bị đầu cuối của bạn (Terminal.app hoặc iTerm2 hoặc bất cứ điều gì) cố gắng tôn vinh các mã điều khiển và các chuỗi thoát đó, loại bỏ cách nó thường hiển thị văn bản và thực hiện theo cách không thể đoán trước.
Rất nhiều công cụ dựa trên thiết bị đầu cuối có các tùy chọn cho phép bạn xử lý các tệp có một số dữ liệu nhị phân trộn lẫn với văn bản ASCII có thể in thuần túy. Ví dụ, cat
có một -v
tùy chọn để làm cho nó thay thế các chuỗi có thể in thay cho các ký tự điều khiển ASCII. Ngoài ra còn có vis(1)
, od(1)
, hexdump(1)
, strings(1)
và những người khác. Bạn cũng có thể sử dụng các công cụ như sed(1)
, grep(1)
và awk(1)
để cố gắng trích xuất dữ liệu XML ASCII từ giữa dữ liệu nhị phân trong tệp.
Trong số các lựa chọn này, tôi nghĩ strings(1)
có thể hứa hẹn nhất cho bạn. Nó quét qua tệp tìm kiếm các chuỗi (chuỗi) ký tự ASCII có thể in được kéo dài từ trung bình đến dài và tự động xuất ra bất kỳ chuỗi nào như vậy tìm thấy. Vì XML hoàn toàn có thể in ASCII, strings(1)
nên in tất cả ra trong khi bỏ qua tất cả dữ liệu âm thanh nhị phân.
strings usesEntireiXMLSpec.WAV
để trích xuất các chuỗi văn bản.