MS Word Doc: автоматизация поиска / замены с помощью сценариев оболочки

#shell #text #doc

#оболочка #текст #документ

Вопрос:

У меня есть несколько документов Word, из которых я хотел бы удалить некоторые элементы. Я хотел бы сделать следующее:

  1. Скопируйте и вставьте все содержимое файла word (может не потребоваться) и переместите его в текстовый файл ИЛИ конвертируйте .doc в .txt
  2. Использование регулярных выражений: заменить [.*] на «» И заменить (.*) на «»
  3. Сохраните результат в текстовом файле с тем же именем, что и в исходном документе Word.

Мысли и указания приветствуются. В нынешнем виде я не знаю, как сделать что-либо из этого программно. Я делаю это вручную, как есть.

Если это имеет значение, я использую Ubuntu 11.04

Ответ №1:

Поскольку вы открыты для использования обычного текста, некоторые улучшения в вашем алгоритме:

  1. Используется antiword для автоматизации преобразования из doc в tx
  2. Используется sed для изменения регулярных выражений на месте: sed -i -e's/bad/good/' file.txt

Обновление (в ответ на комментарий):

Регулярные выражения в порядке, но я не совсем понял цель:

  • если вы хотите заменить вхождения [foo] amp; (foo) на «», используйте:

    sed -i -e's/[.*]/""/g' file.txt; sed -i -e's/(.*)/""/g' file.txt

  • если вы хотите заменить вхождения [foo] amp; (foo) на «foo» при каждом использовании:

    sed -i -e's/[(.*)]/"1"/g' file.txt; sed -i -e's/((.*))/"1"/g' file.txt

Комментарии:

1. Часть 1. Нет проблем. Но я совсем не знаком с sed. Не могли бы вы обновить свой ответ примером, в котором используется 1 из моих вызовов регулярных выражений, чтобы я мог видеть синтаксис?

2. Обновленный ответ, поскольку мне нужно было больше места

3. Мои извинения, я должен был быть более точным в своем использовании. По сути, я хочу удалить все и вся в документе, который заключен в (…) или […] , включая скобки.