блок кода Mutliple для поиска и замены, с блокнотом ++ или? - PullRequest
0 голосов
/ 15 января 2020

У меня есть более сорока страниц c страниц / текстовых документов, которые нужно заменить, заменив несколько частей, и у меня пока нет идеи, как сделать это цифровым способом - я имею в виду автоматизированный способ.

Я начал искать плагины для notepad ++ и увидел:

Поиск нескольких слов и замена в блокноте ++

replace-in-notepad

https://superuser.com/questions/1003790/how-to-find-and-replace-lines-in-multiple-files-using-notepad

но моя проблема более сложна:

пример, у меня есть html файл:

<html><head>
<style class="vjs-styles">
      .vue-js {
        width: 400px;
        height: 210px;
      }

      .vjs-fluid {
        padding-top: 24.56%
      }
    </style>
<title>some</title>
<style type="text/css">
:root td[valign="top"] > .mainmenu[style="padding:10px 0 0 0 !important;"], :root a[href^="https://betway.com/"][href*="&a="], :root a[href^="https://awejmp.com/"], :root a[href^="http://syndication.exoclick.com/"], :root a[href^=" http://ads.ad-center.com/"], { display: none !important; }</style>
<script type="text/javascript" async="" src="https://www.googleadservices.com/pagead/conversion_async.js"></script
... other garbage
<head>
<body class="plain">

<p> 30k garbage to remove </p>

<div class="valuable"> valuable block </div>


<p> garbage to remove </p>
<div class="keepit"> 
<div class="something">
<ul>
<li>items type A
<li>items type P
<li>items type X
</ul>
</div>
<p>valuable data</p>
</div>


<script>
... garbage
function m(n,e){var t=h[n];if(t)for(var r=0;r<t.length;r++)t[r]===e&&t.splice(r,1)}function v(n){return h[n]||[]}function g(n){return p[n]=p[n]||i(t)}function w(n,e){u(n,function(n,t){e=e||"feature",y[t]=e,e in s||(s[e]=[])})}var h={},y={},b={on:l,addEventListener:l,removeEventListener:m,emit:t,get:g,listeners:v,context:e,buffer:w,abort:a,aborted:!1};return b}function o(){return new r}function a(){(s.api||s.feature)&&(d.aborted=!0,s=d.backlog={})}var f="nr@context",c=n("gos"),u=n(4),s={},p={},d=e.exports=i();d.backlog=s},{}],gos:[function(n,e,t){function r(n,e,t){if(i.call(n,e))return n[e];var r=t();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(n,e,{value:r,writable:!0,enumerable:!1}),r}catch(o){}return n[e]=r,r}var i=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(n,e,t){function r(n,e,t,r){i.buffer([n],r),i.emit(n,e,t)}var i=n("ee").get("handle");e.exports=r,r.ee=i},{}],id:[function(n,e,t){function r(n){var e=typeof n;return!n||"object"!==e&&"function"!==e?-1:n===window?0:a(n,o,function(){return i++})}var i=1,o="nr@id",a=n("gos");e.exports=r},{}],loader:[function(n,e,t){function r(){if(!x++){var n=E.info=NREUM.info,e=l.getElementsByTagName("script")[0];if(setTimeout(s.abort,3e4),!(n&&n.licenseKey&&n.applicationID&&e))return s.abort();u(y,function(e,t){n[e]||(n[e]=t)}),c("mark",["onload",a()+E.offset],null,"api");var t=l.createElement("script");t.src="https://"+n.agent,e.parentNode.insertBefore(t,e)}}function i(){"complete"===l.readyState&&o()}
</script>

</body>
</html>

У меня по 4-5 секций в каждой файл для замены - я могу определить начальную html строку и конечную html строку, которая может отделить мусор от ценных данных.

К сожалению, не все сценарий и стиль разделы должны быть заменены / удалены.

Вероятно, будет проще собрать их для ценных данных, но ценные данные более изменчивы (в этой куче файлов), чем данные мусора, которые на 80% стабильны и 20% очень предсказуемо.

То, что я представляю, будет легче (для сценария) найти Sta rt и end и просто нарежьте его или замените нейтральными / дополнительными данными.

Некоторые области мусора имеют более 20 тыс. символов, и я боюсь моих способностей grep.

У меня около 3 -4 раздел замены текста готов поставить (объединить). Я не знаю, как резать мусор.

Я прошу идеи, инструменты, направление, в котором я нахожу решение.

К сожалению, я нахожусь в затруднительном положении.

Я думаю, что какой-нибудь сценарий bash с некоторым grep сделает эту работу, но я не использовал его очень долго, и я боюсь слишком большого количества ложных срабатываний.

Возможно, плагин MultiClipboard для Notepad ++, может быть, какое-нибудь программное обеспечение TextReplacement?

Идеи приветствуются.

- схема файла HTML выглядит следующим образом - извините, я не знаю, как разместить таблицу здесь, чтобы увидеть код, чтобы понять проблема. (очень хорошо смотрится на https://www.onlinehtmleditor.net/)

<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>How looks skeleton of HTML file with crap</title>
<style>
p.Normal
{margin:0.0pt;
margin-top:0.0pt;
margin-bottom:0.0pt;
margin-left:0.0pt;
margin-right:0.0pt;
text-indent:0.0pt;
font-family:"Arial";
font-size:10.0pt;
color:Black;
font-weight:normal;
}

</style>
</head>
<body link="blue" alink="Red" vlink="Purple">
<table width="822" cellspacing="0">
 <tr height="1">
  <td width="226">
  </td>
  <td width="330">
  </td>
  <td width="266">
  </td>
 </tr>
 <tr height="24">
  <td style='background:#1F1FFF;' align=center valign=bottom>
  <p class=Normal align=center style='text-align:center;'><span style='color:White;font-size:14.0pt;'>section of file</span></p>

  </td>
  <td style='background:#1F1FFF;' align=center valign=bottom>
  <p class=Normal align=center style='text-align:center;'><span style='color:White;font-size:14.0pt;'>garbage</span></p>

  </td>
  <td style='background:#1F1FFF;' align=center valign=bottom>
  <p class=Normal align=center style='text-align:center;'><span style='color:White;font-size:14.0pt;'>valuable</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;html&gt;</span></p>

  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;head&gt;</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>half &lt;meta&gt; is crap</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;title&gt; &lt;description&gt; OK</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;script&gt; 2 or 3 times, crap</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;style&gt; 1 OK</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;body&gt;</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;script&gt; linked about 8 external crap</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>boostrap</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>jquery</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>1 more needed, OK</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;header&gt; &lt;nav&gt;</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>80% crap</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>about 20% real navigation</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>breadcrumbs</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>visitior greetings or &lt;h3&gt; info</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;div class=&quot;mainpage&quot;&gt;</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>20k or 40k formating, doubled data,</span></p>

  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>googlads, googletag, external tracking</span></p>

  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;div class=&quot;real value&quot;&gt;</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>some noise crap, can be cleaned late</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>almost 80% pure valuable data</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>many times &lt;ul&gt;&lt;li&gt;</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>nested combinations</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>links to external places</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>&nbsp;
  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>&lt;footer&gt;</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>facebook tracker, external trackers</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>2 lines of valuable data</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>about 8 &lt;scripts&gt; is crap</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>maybe one &lt;style&gt;</span></p>

  </td>
 </tr>
 <tr height="24">
  <td align=left valign=bottom>&nbsp;
  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>additional popups hidden as &lt;div&gt;</span></p>

  </td>
  <td align=left valign=bottom>
  <p class=Normal><span style='font-size:14.0pt;'>and one &lt;script&gt; valuable</span></p>

  </td>
 </tr>
</table>
</body>
</html>

- 1-я подсказка

Sublime3 пункт меню Использовать выделение как Заменить - довольно интересно, но ;-) я пока не вижу возможности селектора (un) wrap (+) - блок мусора содержит более 20 тыс. Текста, и мне нужно прокрутить несколько экранов текста, чтобы выделить его.

Довольно многообещающим может быть область Snippets, но для меня скорее всего будет написать это как VBasi c Программа для обрезки и вставки этих блоков,

или просто заказать ее на hire_coder_com: -)

...