1

Прежде всего:
Я использую последнюю версию OSX и могу редактировать HTML-файлы с помощью CotEditor и KompoZer. Я, однако, неопытен с редакторами HTML в целом:/
Если бы мне пришлось - потому что один из ваших ответов очень прост и удобен в этом смысле - я мог бы переключиться на компьютер с Win7 для этой задачи.

Эта проблема:
У меня есть чуть более 700 HTML-файлов, которые имеют одинаковую базовую структуру, они организованы во многих таблицах, и мне нужно удалить определенный контент из всех них, который всегда состоит из одинаковых строк с заголовками и столбцов под столбцами с изменением содержание. - Если бы я мог указать что-то вроде «удалить весь столбец, который содержит, например," Имя "в верхней ячейке», это будет делать. Кроме того, мне нужно удалить повторяющиеся части (которые теоретически можно найти и заменить для всех файлов ... но, ну, в общем, как-то)

Можете ли вы помочь мне? Будет ли KompoZer делать пакетный трюк или у вас есть другая рекомендация? Спасибо :)

-----РЕДАКТИРОВАТЬ-----
Я попробовал TextWrangler для его возможностей пакетного поиска и замены, и он очень хорошо работает с поиском повторяющегося кода во многих файлах, поэтому я знаю, как я получу одинаковые биты из каждого файла. Это оставляет меня с изменяющимся содержанием.

Есть ли способ найти контент между двумя повторяющимися точками? Например, если я знал что-то до и после того, что содержимое, которое я хочу удалить, всегда одинаково:

<tag> txt_a Content1_to_delete txt_b </tag>
<tag> txt_a Content2_to_delete txt_b </tag>
<tag> txt_a Content3_to_delete txt_b </tag>

поэтому мне нужно найти и заменить между <tag> txt_a и txt_b </tag> или даже найти и заменить, начиная с <tag> txt_a вплоть до txt_b </tag>

это неприятный момент для меня, где мне действительно нужна помощь
----- ----- EDIT2
После ответа Гомбая Шандора в сочетании с комментарием Dooley_labs у меня появилось несколько идей, и хотя вариант sed будет работать с терминала, я выбрал TextWrangler для этой работы.
TextWrangler может выполнять поиск и замену для нескольких файлов, но также будет принимать регулярные выражения с помощью параметра "grep". Я узнал о регулярных выражениях и смог решить мою проблему. "Волшебным" моментом для меня было правильное подстановочные знаки. Особенно простой .* Всем, кто хотел бы возиться с регулярными выражениями, я рекомендую этот сайт, который я нашел очень полезным:regexr.com

1 ответ1

0

Наиболее распространенные общие IDE имеют функцию (regexp) поиска и замены в файлах (в структуре каталогов). Даже небольшие редакторы, как правило, предлагают эту функцию; в Windows хорошим примером является NotePad++.

Для OSX, где у вас есть обычные инструменты оболочки, это может быть типичная задача для sed, которая сама является редактором ... очень специальным редактором.

При условии, что все файлы находятся в одном и том же каталоге и находятся в этом каталоге, вы можете использовать это для удаления ненужных частей и поместить выходные данные в файлы, заканчивающиеся на .htm, которые (после некоторой проверки) вы можете переименовать в .html.

$ cat just-an-html.html
<tag> txt_a Content1_to_delete txt_b </tag>
<tag> txt_a Content2_to_delete txt_b </tag>
<tag> txt_a Content3_to_delete txt_b </tag>
$ for HTML in *.html; do sed -e 's@\(tag> txt_a\) .*\(txt_b </tag\)@\1 \2@g' $HTML > $(basename $HTML html)htm ; done
$ ls *.htm
just-an-html.htm
$ cat just-an-html.htm
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>

Также возможно удалить подстроку непосредственно внутри файлов (-i: inplace), но я бы не рекомендовал этого делать, если у вас нет актуальных резервных копий.

$ cat just-an-html.html
<tag> txt_a Content1_to_delete txt_b </tag>
<tag> txt_a Content2_to_delete txt_b </tag>
<tag> txt_a Content3_to_delete txt_b </tag>
$ for HTML in *.html; do sed -i -e 's@\(tag> txt_a\) .*\(txt_b </tag\)@\1 \2@g' $HTML  ; done
$ cat just-an-html.html
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .