1

この質問は非常に具体的であるため、あいまいなタイトルとタグで申し訳ありません。

私は決して大したスクリプターでもコーダーでもありません。特定の結果を週に数回更新する必要がある Web サイトを運営しています。結果は特別なソフトウェアによって作成され、これらの形式のいずれかでエクスポートされます。html、pdf、doc、xls、rpt、ttx、csv、odbc、rec、rtf、または xml。

私のウェブサイトは、エクスポートされたファイルとは異なるレイアウトのテーブルを使用しているため、現在、 my と タグの間で情報をコピーして貼り付けています。ほんの数分しかかかりませんが、これを自動化する方法を知りたいですか? エクスポートされたファイルは次のようになります。

1    John and George    12
2    Peter and Suzan    10
3    Allan and Ed        8

そして、次の行の何かである必要があります:

<table width="100%" cellspacing="0" class="tabels" id="top">
<tr>
<td colspan="3" class="tabel"><b> Groupp A</b></td>
</tr>
<tr>
<td class="tabel"><strong> 1. </strong></td>
<td class="tabel">John and George</td>
<td class="tabel">12</td>
</tr>
<tr>
<td class="tabel"><strong>2.</strong></td>
<td class="tabel">Peter and Suzan</td>
<td class="tabel">10</td>
</tr>
<tr>
<td class="tabel"><strong> 3. </strong></td>
<td class="tabel">Allan and Ed</td>
<td class="tabel">8</td>
</tr>

これは非常に基本的なことかもしれません。いくつかの検索コマンドと置換コマンドでうまくいくはずです。Notepad++ を使用してみましたが、皆さんはこれをどのように処理するのでしょうか? Linux または Windows マシンを使用できます。

4

2 に答える 2

0

私はawkこのようなものに使用します (ただし、Perl などのテスト処理ツールはどれも同じように機能します)。

最初に入力ファイル:

pax> cat testprog.in

1    John and George    12
2    Peter and Suzan    10
3    Allan and Ed        8

次に、awkスクリプト自体:

pax> cat testprog.awk

BEGIN {
    print "<table width=\"100%\" cellspacing=\"0\" class=\"tabels\" id=\"top\">"
    print "  <tr>"
    print "    <td colspan=\"3\" class=\"tabel\"><b> Groupp A</b></td>"
    print "  </tr>"
}
{
    print "  <tr>"
    print "    <td class=\"tabel\"><strong>" $1 ".</strong></td>"

    str = ""; for (i = 2; i < NF; i++) str = str " " $i
    print "    <td class=\"tabel\">" substr (str,2) "</td>"

    print "    <td class=\"tabel\">" $NF "</td>"
    print "  </tr>"
}
END {
    print "</table>"
}

次に、動作を確認できるようにサンプルを実行します。

pax> awk -f testprog.awk testprog.in

<table width="100%" cellspacing="0" class="tabels" id="top">
  <tr>
    <td colspan="3" class="tabel"><b> Groupp A</b></td>
  </tr>
  <tr>
    <td class="tabel"><strong>1.</strong></td>
    <td class="tabel">John and George</td>
    <td class="tabel">12</td>
  </tr>
  <tr>
    <td class="tabel"><strong>2.</strong></td>
    <td class="tabel">Peter and Suzan</td>
    <td class="tabel">10</td>
  </tr>
  <tr>
    <td class="tabel"><strong>3.</strong></td>
    <td class="tabel">Allan and Ed</td>
    <td class="tabel">8</td>
  </tr>
</table>

それがどのように機能するかについては、以下で説明します。

BEGINand句はEND、入力ファイル内の行の処理の前後に何を出力するかを制御するだけです。それはテーブルそのものであり、最初の行です。

行ごとに、最初にtrタグとtd、行の最初の単語を含むタグを出力します。

次にtd、中間の引数に基づいて別の行を作成し、その過程でスペースを折りたたみます。

行に最後の引数がある a finaltdと、最後のtrです。これで終わりです。次の行に進みます。

于 2012-11-01T09:18:13.427 に答える
0

Linuxsedソリューションは次のとおりです。

sed 's|\([0-9]*\) *\(.*[^ ]\)  *\([0-9]*\)$|<tr><td class="tabel"><strong>\1.</strong></td><td class="tabel">\2</td><td class="tabel">\3</td></tr>|' filename > filename.html

これは、テーブルの行を処理するだけです。echoそれ以外はすべて、スクリプト内のコマンドで生成できる静的ボイラープレートのように見えます。

于 2012-11-01T09:18:19.120 に答える