Vor dem ersten Schritt muss man wissen, dass OpenOffice-Dokumente (wie auch das ältere StarOffice-Format .sxw) Zip-Files sind. Will man sie ohne Hilfe der Erzeuger-Software lesen, muss man sie erst entpacken:
unzip Test.odt
Von den diversen Files, die dabei entstehen (settings.xml, meta.xml, styles.xml, etc.) interessiert den Leser nur eines: content.xml. Das ist allerdings in seiner Rohform kaum verdaulich, denn es wimmelt hier von XML-Tags und die Textzeilen gehen darin unter:
... <office:body> <office:text> Test Das ist ein Testtext in einem Testfile. ...
Ein Perl-Einzeiler kann aber den ganzen XML-Ballast leicht mit einem Schwung entfernen:
jcb@hercules:~/Arbeitsfläche$ cat content.xml | perl -p -e "s/<[^>]*>/ /g;s/\n/ /g;s/ +/ /;"
Perl benutzt hier drei Reguläre Ausdrücke. Der erste passt auf Konstrukte, die mit einer geöffneten spitzen Klammer beginnen, irgendwas außer einer schließenden spitzen Klammer enthalten, und mit ">" schließen. An ihrer Stelle wird ein Leerzeichen eingesetzt und schon sind alle XML-Tags weg. Die zweite RegEx entfernt Zeilenschaltungen und die dritte mehrfache Leerzeichen - die beide auch im Zuge der Tauschaktionen entstanden sein können. Übrig bleibt der gut lesbare pure Text, der vom Terminal je nach Fensterbreite am Zeilenende umbrochen wird.