どのように交換できますか? element in many HTML files?

どのように交換できますか?  element in many HTML files?</h1>

私のディレクトリには~/foo多くのHTMLファイルが含まれています。それぞれに不要な要素が異なりますtitle。つまり、各ファイルにはコードが含まれています。

<title>something unwanted</title>

これらのファイルの多くには、span次の要素も含まれています。

<span class="org-document-info-keyword">#+Title:</span> 
<span class="org-document-title">correct title</span>

titleすべてのHTMLファイルをスキャンし、2番目の種類のコードブロックを含むすべてのファイルの不要なコンテンツを正しいタイトルに置き換えるスクリプトを作成したいと思います。

ヘッダーを置き換えた後、スクリプトから2番目のブロックのコードを削除したいと思います。

たとえば、スクリプトを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!-- Created by htmlize-1.47 in css mode. -->
<html>
  <head>
    <title>foo.org</title>
    <style type="text/css">
    <!--
      body {
        color: #839496;
        background-color: #002b36;
      }
      .org-document-info {
        /* org-document-info */
        color: #839496;
      }
      .org-document-info-keyword {
        /* org-document-info-keyword */
        color: #586e75;
      }
      .org-document-title {
        /* org-document-title */
        color: #93a1a1;
        font-size: 130%;
        font-weight: bold;
      }
      .org-level-1 {
        /* org-level-1 */
        color: #cb4b16;
        font-size: 130%;
      }

      a {
        color: inherit;
        background-color: inherit;
        font: inherit;
        text-decoration: inherit;
      }
      a:hover {
        text-decoration: underline;
      }
    -->
    </style>
  </head>
  <body>
    <pre>
<span class="org-document-info-keyword">#+Title:</span> <span class="org-document-title">my desired title
</span><span class="org-document-info-keyword">#+Date:</span> <span class="org-document-info">&lt;2015-08-23 Sun&gt;
</span>
<span class="org-level-1">* hello world</span>

Vivamus id enim.  

</pre>
  </body>
</html>

結果が出なければならない

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!-- Created by htmlize-1.47 in css mode. -->
<html>
  <head>
    <title>my desired title</title>
    <style type="text/css">
      <!--
      body {
          color: #839496;
          background-color: #002b36;
      }
      .org-document-info {
          /* org-document-info */
          color: #839496;
      }
      .org-document-info-keyword {
          /* org-document-info-keyword */
          color: #586e75;
      }
      .org-document-title {
          /* org-document-title */
          color: #93a1a1;
          font-size: 130%;
          font-weight: bold;
      }
      .org-level-1 {
          /* org-level-1 */
          color: #cb4b16;
          font-size: 130%;
      }

      a {
          color: inherit;
          background-color: inherit;
          font: inherit;
          text-decoration: inherit;
      }
      a:hover {
          text-decoration: underline;
      }
    -->
    </style>
  </head>
  <body>
    <pre>
      <span class="org-document-info-keyword">#+Date:</span> <span class="org-document-info">&lt;2015-08-23 Sun&gt;
      </span>
      <span class="org-level-1">* hello world</span>

      Vivamus id enim.  

    </pre>
  </body>
</html>

これを簡単に実行できるツールはLinuxにありますか?

ベストアンサー1

おそらくスクリプトを書く方が良いでしょう。このスクリプトは強力ではありませんが(空の文字列をチェックせずに複数行の必須ヘッダーを考慮しないなど)、起動に役立ちます。サポートクレイジーを始める前に。

#! /bin/bash

FILES="./*.html"
for f in $FILES
do
     grep '.*org-document-title">.*' $f |\
         sed -e 's/.*org-document-title">\([^<]\+\).*/\n\1/g' |\
         tail -n 1 |\
         xargs -I new_title sed -i.bak 's/<title>[^>]\+<\/title>/<title>new_title<\/title>/g' $f
done

これはヘッダーを新しいヘッダーに置き換えるだけです。別の手順を実行し、不要な要素をmy desired title削除してそれを拡張できます。span

おすすめ記事