Warum ist die Befehlszeilen-Cat anders als BBEdit?

Warum ist die Befehlszeilen-Cat anders als BBEdit?

In der Filmbranche ist es üblich, WAV-Audiodateien mit Metadaten im iXML RIFF-Block zu haben. Eine einfache Möglichkeit, diese Metadaten zu lesen, besteht darin, die WAV-Datei in einem Texteditor wie BBEdit oder Notepad++ oder sogar TextEdit zu öffnen. Aber mit der Befehlszeile catoder tailso funktioniert es nicht, ich sehe nur nutzlose Zeichen. Ich verwende macOS 10.13, falls das wichtig ist. Warum ist es catanders als diese Textbearbeitungs-Apps?

Hier ist eine Beispieldatei mit dem iXML ganz unten:http://www.gallery.co.uk/ixml/examples/usesEntireiXMLSpec.WAV

Antwort1

Wenn catdie Datei ausgegeben wird, wird sie Byte für Byte so ausgegeben, wie sie ist, ohne Leerzeichen, Punkte oder andere Ersatzzeichen. Wenn also die binären Audio-Beispieldaten früher in der WAV-Datei ausgegeben werden, stimmen einige dieser Bytes zufällig mit alten Terminal-Steuercodes und „Escape-Sequenzen“ überein (Byte-Sequenzen, die mit dem Zeichen „ESC“ beginnen und beispielsweise zum Ändern der Text- oder Hintergrundfarbe, zum Löschen des Terminalbildschirms und zum Neupositionieren des Cursors innerhalb des Terminalbildschirms verwendet werden können). Ihr Terminalemulator (Terminal.app oder iTerm2 oder was auch immer) versucht, diese Steuercodes und Escape-Sequenzen zu berücksichtigen, was die normale Textanzeige durcheinanderbringt und dies auf unvorhersehbare Weise tut.

Viele terminalbasierte Tools bieten Optionen, mit denen Sie Dateien verarbeiten können, die Binärdaten mit reinem druckbarem ASCII-Text vermischt enthalten. Beispielsweise catbietet eine -vOption, mit der ASCII-Steuerzeichen durch druckbare Sequenzen ersetzt werden. Es gibt auch vis(1), od(1), hexdump(1), strings(1)und andere. Sie können auch Tools wie sed(1), grep(1), und verwenden awk(1), um zu versuchen, die ASCII-XML-Daten aus der Mitte der Binärdaten in der Datei zu extrahieren.

Von diesen Optionen ist dies meiner Meinung nach strings(1)die vielversprechendste für Sie. Es durchsucht die Datei nach mittellangen bis langen ununterbrochenen Folgen (Zeichenfolgen) druckbarer ASCII-Zeichen und gibt alle gefundenen Zeichenfolgen automatisch aus. Da XML rein druckbares ASCII ist, strings(1)sollte es alles ausdrucken und alle binären Audiodaten überspringen.

verwandte Informationen