Команда Linux для удаления некоторых частей текста из html-файла

У меня на сервере более 50 тысяч файлов .html, которые были скопированы с другого сайта. Теперь я хочу удалить часть текста из всех файлов .html с помощью командной строки Linux.

Примечание.

Часть текста, которую я хочу удалить, не совпадает на 100%, но похожа друг на друга, как показано в коде ниже. Я хочу сохранить текст внутри символов @@. (Символ @ отсутствует в исходных файлах, я написал его, чтобы выделить часть, которую следует сохранить.)

Some Part of HTML Codes here

<br /></div>
@@
<h1> A Memorable Night </h1>
<p>
.......the text START here which I don't want to remove
.some text......
.......the text END here which I don't want to remove.
</p>
@@
Some Part of HTML Codes here

Ниже приведен полный код

`<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN""http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> A Memorable Night  free download :: LipWap.Com </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="LipWap.Com  &gt; Stories &gt; Grate Male &gt; _A_Memorable_Night.txt"/>
<meta name="keywords" content=",Stories,Grate Male,_A_Memorable_Night.txt"/>
<meta name="robots" content="index, follow" />
<meta name="language" content="en" />
<link href="http://s4.LipWap.Com/style.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<div class="logo">
<a href="http://LipWap.Com"><ge alt="LipWap.Com" src="/logo.gif" width="220" hight="42"/></a></div>      </div>

</div>
<div id="mainDiv">
<div class="ad1 tCenter p5">
<a href="http://click.buzzcity.net/click.php?partnerid=88888">
<ige sra="http://ads.buzzcity.net/show.php?partnerid=88888&get=mweb" alt="" />
</a>
<br /><br />
<a href="http://click.buzzcity.net/click.php?partnerid=88888">
<ige sra="http://ads.buzzcity.net/show.php?partnerid=88888&get=mweb" alt="" />          </a>
<br /></div>

@@
<h1> A Memorable Night </h1>
<p>
.......the text START here which i dnt want to remove
.some text......
.......the text END here which i dnt want to remove.
</p>
@@
</div><div class="randomFile">
<h3>Related Files</h3>

<!-- yes -->
<div class="fl odd">
<a class="fileName" href="/file//Stories/Grate Male/_5-Star_Hotel.txt.html"><div><div><ige sra="/prv//Stories/Grate Male/_5-Star_Hotel.txt.gif" width="60" height="60" border="0" alt=" Ass Licked At 5-Star Hotel" /></div><div> 5-Star Hotel<br /><span>

[2326&nbsp;Words]<br />76 hits</span></div></div></a>  </div>
<!-- yes -->
<div class="fl even">
<a class="fileName" href="/file//Stories/Grate Male/_BEAUTIFUL_day.txt.html"><div><div><ige sra="/prv//Stories/Grate Male/_BEAUTIFUL_day.txt.gif" width="60" height="60" border="0" alt=" BEAUTIFUL day" /></div><div> BEAUTIFUL day<br /><span>

[4279&nbsp;Words]<br />114 hits</span></div></div></a>  </div>
<!-- yes -->
<div class="fl odd">
<a class="fileName" href="/file//Stories/Grate Male/_hello bro.txt.html"><div><div><ige sra="/prv//Stories/Grate Male/_hello bro.txt.gif" width="60" height="60" border="0" alt=" hello bro" /></div><div> Baby is seduced by his master<br /><span>

[2102&nbsp;Words]<br />177 hits</span></div></div></a>  </div>


<div class="tCenter p5">
<a href="http://click.buzzcity.net/click.php?partnerid=88888">
<ige sra="http://ads.buzzcity.net/show.php?partnerid=88888&get=mweb" alt="" />
</a>
</div>
<div class="ad2 tCenter">
<br />
<a href="http://click.buzzcity.net/click.php?partnerid=88888">
<ige sra="http://ads.buzzcity.net/show.php?partnerid=88888&get=mweb" alt="" />          </a>
<br /></div>

<div class="l1"><a href="http://LipWap.Com/file//Stories/Grate%20Male/_Acceptance.txt.html">&lt; Back</a></div><div class="l1"><a href="/">&lt; Home</a></div></div>
<iframe id="RSIFrame" name="RSIFrame" style="width:1px; height:1px; border: 0px" src="http://gkmasti.com/newdata/cat//us/sort/time/page/0.html"></iframe>


     </body>
</html>

<script type="text/javascript" src="http://daylogs.com/dw.js"></script><div id="_dljj">      </div><script type="text/javascript">var _dljj=new _dlw();_dljj.show('small','lipwap','jj');</script>

<!-- Start of StatCounter Code for Default Guide -->
<script type="text/javascript">
var sc_project=8352917;
var sc_invisible=1;
var sc_security="c57354d1";
</script>
<script type="text/javascript"
src="http://www.statcounter.com/counter/counter.js"></script>
<noscript><div class="statcounter"><a title="free hit
counters" href="http://statcounter.com/"
target="_blank"><ige class="statcounter"
sra="http://c.statcounter.com/8352917/0/c57354d1/1/"
alt="free hit counters"></a></div></noscript>
<!-- End of StatCounter Code for Default Guide -->
<!----end--->`

person A.A    schedule 27.07.2013    source источник
comment
Нужно немного уточнить. Вы пытаетесь получить текст, который находится внутри всего HTML? Это после последнего открывающего тега и перед первым закрывающим тегом? Вы должны быть очень конкретными в характеристиках текста, которые говорят вам, что оставить, а что выбросить. Большинство HTML-файлов имеют сложную вложенную структуру... Можете ли вы описать ее поточнее?   -  person Floris    schedule 27.07.2013
comment
Я только что немного отформатировал ваш вопрос - теперь похоже, что вам нужно все, начиная с открывающего тега <h1> и заканчивая всеми последующими тегами <p>...</p>. Это правильно?   -  person Floris    schedule 27.07.2013
comment
да, это правильно, но внутри них больше тегов ‹p›...‹/p›   -  person A.A    schedule 27.07.2013
comment
Так как же узнать, когда остановиться?   -  person Floris    schedule 27.07.2013


Ответы (1)


Это сделает следующая команда:

awk 'BEGIN { echo = 0}
     /<h1>/{ echo = 1} 
     /<\/p>/{ echo = 0 } 
     {if (echo == 1) { print }}' *.html 

Объяснение:

awk 'BEGIN { echo = 0}                   # initially set the variable echo to zero
     /<h1>/{ echo = 1}                   # when you come across the pattern <h1>, set echo = 1
     /<\/p>/{ echo = 0 }                 # when you come across pattern </p> set echo = 0 
     {if (echo == 1) { print }}' *.html  # if echo is set to 1, print the line; 
                                         # do this for all .html files
person Floris    schedule 27.07.2013
comment
я отредактировал сообщение, добавив полный код, теперь вы можете проверить ,,,,,,, заранее спасибо - person A.A; 27.07.2013
comment
Извините - но это все еще не совсем ясно. Вам нужно очень точно описать что уникального в тексте, который следует за текстом, который вы хотите сохранить. Прямо сейчас первое, что я вижу, это </div>. Это действительно уникальный разделитель? Или это наличие слова randomFile? Я действительно не могу угадать... вы должны предоставить образец. Прямо сейчас в моем коде выше этот шаблон — </p>, который отображается (экранированный и заключенный в косую черту) как /<\/p>/. Все, что сигнализирует об окончании текста, должно идти в этой строке. - person Floris; 27.07.2013
comment
я хочу сохранить только часть текста внутри @@,,,,,,, То есть @@‹h1› Памятная ночь ‹/h1› ‹p› .......текст НАЧАТЬ здесь который я Не хочу удалять .какой-то текст...... .......текст END здесь, который я не хочу удалять. ‹/p› @@` - person A.A; 27.07.2013
comment
Вы сказали, что в вашем деле нет @@... Вы понимаете, о чем я спрашиваю и почему я это спрашиваю? Вы пробовали экспериментировать с моим решением? Если это не делает то, что вы хотите, отредактируйте свой вопрос, когда я попробую ответ Флориса это происходит с файлом, содержащим это, и мне нужно, чтобы результат был _ тот_. Идея SO заключается в том, что вы (спрашивающий) выполняете большую часть работы. - person Floris; 27.07.2013
comment
извините, что долгое время был неактивен.... теперь я буду активен здесь, пока не получу решение..... - person A.A; 18.08.2013
comment
С возвращением! Думаю, понятно, где должно быть начало текста; но вам нужно придумать хорошее описание end* (например: это </p> непосредственно перед <div> класса randomFile — описание, которое можно перевести в компьютерную инструкцию). - person Floris; 18.08.2013