読者です 読者をやめる 読者になる 読者になる

僕たちプログラマーは、ちょっとしたコード生成に、AWKを使います!


元ネタ⇒ Excelを使った高速HTML生成

ということで、愛すべきAWKでやってみましょう。

↑のように必要な範囲を切り取って、おもむろにテキストに貼り付けます。
で、そのテキストファイルを(bokutati.txtで)保存します。

bokutati.txt

横浜みなと博物館	神奈川県横浜市西区みなとみらい2-1-1	045-221-0280 
よこはまコスモワールド	神奈川県横浜市西区みなとみらい2-1-2	045-221-0281 
八景島シーパラダイス	神奈川県横浜市西区みなとみらい2-1-3	045-221-0282 
横浜マリンタワー	神奈川県横浜市西区みなとみらい2-1-4	045-221-0283 
日本郵船氷川丸	神奈川県横浜市西区みなとみらい2-1-5	045-221-0284 
新横浜ラーメン博物館	神奈川県横浜市西区みなとみらい2-1-6	045-221-0285 

windowsからLinux or Macへそのテキストファイルを持ってきた場合は、
$ nkf -w --overwrite bokutati.txt
とかやって文字コードを変換してやるとよいでしょう。

次に、awkプログラムを書きます。

bokutati.awkファイル

BEGIN {
  print "<dl>"
}	
{
  print "<dt>" $1 "</dt><dd><span class=\"address\">" $2 "</span><span class=\"telrrrno\">" $3 "</span></dd>"
}
END {
  print "</dl>"
}

BEGINブロックは最初に必ず実行されます。
ENDブロックは最後に必ず実行されます。
真ん中のブロックは、毎行実行されます。
$0 は一行分の文字列が、$1 には1カラム目の文字列が、$2 には2カラム目の文字列が、$3 には3カラム目の文字列が入っているわけです。
でそれらを半角スペースでつなぐと、文字列が結合され、
print で標準出力されます。

ターミナルを開いて、

$ awk -f bokutati.awk bokutati.txt >>  r.txt

で、

$ cat r.txt
<dl>
<dt>横浜みなと博物館</dt><dd><span class="address">神奈川県横浜市西区みなとみらい2-1-1</span><span class="telrrrno">045-221-0280</span></dd>
<dt>よこはまコスモワールド</dt><dd><span class="address">神奈川県横浜市西区みなとみらい2-1-2</span><span class="telrrrno">045-221-0281</span></dd>
<dt>八景島シーパラダイス</dt><dd><span class="address">神奈川県横浜市西区みなとみらい2-1-3</span><span class="telrrrno">045-221-0282</span></dd>
<dt>横浜マリンタワー</dt><dd><span class="address">神奈川県横浜市西区みなとみらい2-1-4</span><span class="telrrrno">045-221-0283</span></dd>
<dt>日本郵船氷川丸</dt><dd><span class="address">神奈川県横浜市西区みなとみらい2-1-5</span><span class="telrrrno">045-221-0284</span></dd>
<dt>新横浜ラーメン博物館</dt><dd><span class="address">神奈川県横浜市西区みなとみらい2-1-6</span><span class="telrrrno">045-221-0285</span></dd>
</dl>

となります。
awk可愛いですね。ちょっと覚えると、とても簡単にテキスト整形が可能になります。
またawkはとても高速なので、ログ解析にも向いています。