2010年9月12日

awkメモ:HTMLのtableに1行おきの背景色をつける

これは自分用のメモです。sed & awk使いには「また、車輪を再発明しとってやがな〜」とそしられそうなものばかりでしょう。

先の記事でつくったような単純なtableの行やセルに体裁をつけます。まずは、1行おきに背景色を指定し、しかも左端の第1列には色をつけない...

BEGIN {
  RS="</tr>"
  FS="<td>"
}

NR % 2 == 1 {
  print $0 RS
}

NR % 2 == 0 {
  print $1\
  "<td>"$2\
  "<td style=\"background-color:#ccffff;\">"$3\
  "<td style=\"background-color:#ccffff;\">"$4\
  "<td style=\"background-color:#ccffff;\">"$5\
  "<td style=\"background-color:#ccffff;\">"$6\
  "<td style=\"background-color:#ccffff;\">"$7\
  "<td style=\"background-color:#ccffff;\">"$8\
  RS  
}

もとのHTMLのソースで、1レコード=複数行にしているので、レコードセパレータ(RS)とフィールドセパレータ(FS)でちょっと無理をさせてます。そのため、$1が「<tr>」に、表の1列めが$2、2列めが$3...と気持ち悪いことになってしまいました。

</td>と改行、インデントは$2〜$8の末尾にそれぞれ入ってます($8にはインデントは入っていませんが)。

1レコード=1行だったもとのタブ区切りテキストを直接、awkに喰わせる方が簡単かもしれません。

レコード番号(NR)の剰余(演算子%)で場合分けをしてますから、「n行おき」の指定も可能です。(↑これが、このスクリプトのミソですね)

なお、上の例では1列目以外は同じ背景色ですが、列毎に書式を指定できますね。

まあ、とりあえずの間に合わせスクリプです (^_^;;

-

0 件のコメント: