antiword
, есть wv
(и unrtf
, и pdftotext
для RTF и PDF соответственно). Вот только для открытого и всеми любимого ODT (OpenDocument, формат OpenOffice) — такой радости нет. o3read
их не берёт.В общем, запускать мне OpenOffice лениво, в AbiWord тоже не так уж шустр, так что написал себе скрипт-однострочник (antiodt):
#!/bin/sh unzip -p "$1" content.xml | \ xmlstarlet sel -N text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" \ -T -t -m '//text:p' -v . -n | lessПоскольку документ ODT это zip-архив, а внутри весь текст в виде XML лежит в content.xml, то отсавалось только выбрать содержимое текстовых элементов (забив на всё форматирование, кроме разбиения на абзацы). При этом для разбора XML используется утилита
xmlstarlet
. Все имеющиеся в наличие у меня ODT документы теперь в мгновение ока можно прочитать так:$ antiodt документ.odtИдею почерпнул здесь. Кто велосипед уже изобретал — не жалуйтесь.
Дополнение 2009-09-23: Если необходимо перевести документ из ODT в plain text с частичным сохранением форматирования, то можно ещё использовать скрипт odt2txt.py. Скрипт посложней, он преобразует ODT в текст с разметкой Markdown.
P.S. View OpenOffice files as plain text (эта заметка по-английски)