У меня на сервере более 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--->`
0
A.A 27 Июл 2013 в 07:57
Нужно немного уточнить. Вы пытаетесь получить текст, который находится внутри всего HTML? Это "после последнего открывающего тега и перед первым закрывающим тегом? Вы должны быть очень конкретны в характеристиках текста, которые говорят вам, что следует сохранить, а что отбросить. Большинство файлов HTML имеют сложную вложенную структуру ... Может ты это точнее описываешь?
 – 
Floris
27 Июл 2013 в 08:02
Я только что немного отформатировал ваш вопрос - теперь похоже, что вам нужно все, от открывающего тега <h1> до всего в следующих тегах <p>...</p>. Это верно?
 – 
Floris
27 Июл 2013 в 08:05
Да, это правильно, но внутри них больше тегов

...

 – 
A.A
27 Июл 2013 в 08:12
Так как же узнать, когда остановиться?
 – 
Floris
27 Июл 2013 в 08:16

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
0
Floris 27 Июл 2013 в 08:16
Я отредактировал сообщение, добавив полный код, теперь вы можете проверить ,,,,,,, спасибо в расширенном
 – 
A.A
27 Июл 2013 в 08:43
Извините, но это все еще не совсем понятно. Вам необходимо очень точно описать, что уникального в тексте, который следует за текстом, который вы хотите сохранить . Прямо сейчас первое, что я вижу, это </div>. Это действительно уникальный разделитель? Или это наличие слова randomFile? Я действительно не могу догадаться ... вы должны предоставить образец. Прямо сейчас в моем коде выше этот шаблон - </p>, который отображается (экранирован и заключен в косую черту) как /<\/p>/. Какие бы сигналы «конец текста» ни входили в эту строку.
 – 
Floris
27 Июл 2013 в 08:47
Я хочу сохранить только часть текста внутри @@ ,,,,,,,, То есть @@

A Memorable Night

....... текст START здесь, который я dnt хочу удалить .some текст ...... ....... текст END здесь, который я не хочу удалить.

@@ `
 – 
A.A
27 Июл 2013 в 09:36
Вы сказали, что в вашем файле нет @@ ... Вы понимаете, о чем я спрашиваю, и почему я это спрашиваю? Вы пробовали поэкспериментировать с моим решением? Если он не делает то, что вы хотите, отредактируйте свой вопрос, указав «когда я пытаюсь ответить Флорис это происходит с файлом, содержащим this , и мне нужно, чтобы результат был _ что_". Идея SO заключается в том, что вы (спрашивающий) делаете большую часть работы.
 – 
Floris
27 Июл 2013 в 15:52
Извините за то, что был неактивен в течение длительного времени .... теперь я буду активен здесь, пока не получу решение .....
 – 
A.A
18 Авг 2013 в 09:03