Bash, Perl регулярное выражение справки - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть текстовый файл (utf8):

http://d.pr/1d6T+

Пожалуйста, помогите мне с регулярным выражением.Я хочу заменить

<p>
TERRANO...
</p>

на: пустое место.:)

И:

<td width="20%" align="left" class="thead">Rám:</td>

С:

<td width="20%" align="left" class="thead">Something else:</td>

Просто слово "Рам" также можно заменить.

Я нашел этолиния, но я не знаю, как ее использовать:

find . -type f -exec perl -p -i -e "s/SEARCH_REGEX/REPLACEMENT/g" {} \;

Ответы [ 4 ]

3 голосов
/ 15 апреля 2011

Если вы не против конвертировать ваши обычные .txt файлы в. (X) html файлы и иметь в наличии HTML tidy и xmlstarlet, вы можете обойтись без регулярных выражений!

3 голосов
/ 14 апреля 2011

при условии, что вы хотите заменить текст в файлах HTML:

cd /path/to/my/project
find . -iname '*.html' -exec perl -p -i -e "s/Rám:/Something else:/g" {} \;
find . -iname '*.html' -exec perl -p -i -e "s/TERRANO.../Something else:/g" {} \;
0 голосов
/ 03 ноября 2011

Старая тема, но полезная: для массового поиска и замен я склоняюсь к использованию peewee-ов Perl (имя основано на используемых аргументах), а не полагаюсь на find и затем выполняю perl-код.

То есть я использую следующее:

perl -pi -w -e 's/<p>\nTERRANO.+?\n<\/p>/<p>\n\n<\/p>/g;' ./*.html

и

perl -pi -w -e 's/<td (.+?) class=\"thead\">Rám:<\/td>/<td $1 class="thead">Something else:<\/td>/g;' ./*.html

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 17 апреля 2011

Чтобы извлечь только таблицу из utf8file.xhtml после шагов редактирования на месте, вы можете использовать функцию «print copy of XPATH expression» в xmlstarlet:

xmlstarlet sel --help

# test
xmlstarlet sel -I -t -c "//*[local-name()='table'][@id='model-table-specifikacia']" utf8file.xhtml

xmlstarlet sel -I -t -c "//*[local-name()='table'][@id='model-table-specifikacia']" utf8file.xhtml > utf8file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...