基本コマンド編:レコード単一化(xtuniq)

xtuniqは、レコード選択に似た機能を持つコマンドで、値が重複する行を単一化するコマンドである。


ここでは、先に作成したスクリプトxtcut.shを再利用することにする。xtuniq.shという名前でコピーしておこう。

新しくコピーされたファイル"xtuniq.sh"を編集する。まず、xtcutで日付だけを抜き出すように変更する。
次に各日付の値が同じ行を単一化するためにxtuniqコマンドを用いる。xtuniqでは"-k"でどの項目の重複行を単一化するかを指定する。ここでは日付を単一化するので「xtuniq -k 日付」となり、この行をxtcutの行の下に挿入する。
そして最後に、出力ファイル名(xtuniq.xt)、およびコメントの変更も忘れずに。
これらの変更を反映させたスクリプトを下図に示しておく。

#!/bin/bash
xtcut -f 日付 -i /mnt/h00/tutorial/dat.xt |
xtuniq -k 日付 |
xtheader -l "チュートリアル" -c "xtuniq" -o xtuniq.xt

ここで指定した三行の意味は次の通りである。
xtcutで「日付」の項目を選択し、その結果をパイプラインで次のxtuniqコマンドに送る。xtuniqコマンドでは、日付が重複している行を一行にする。そしてその結果データは再びパイプラインによって次のxtheaderコマンドに送られる。xtheaderコマンドは、タイトルとコメントを変更し、その結果を"xtuniq.xt"というファイルに書き込む。

 スクリプトの編集が終れば保存して、実行する。結果データを確認すると下図のように、日付項目だけが出力され、かつ日付の値が単一化されていることがわかる。

$ more xtuniq.xt
<?xml version="1.0" encoding="euc-jp"?>
<xmltbl version="1.1">
<header>
<title>チュートリアル</title>
<comment>xtuniq</comment>
<field no="1" name="日付" sort="1"></field>
</header>
<body><![CDATA[
20020101
20020102
20020103
20020104
20020105
20020106
20020107
20020108
20020109
20020110
20020111
20020112
20020113
20020114
--More--(9%)

練習課題

次のようなデータを作成しよう。スクリプト名及び結果ファイル名は表に示されたものを使おう。

帳票名 スクリプト名 結果ファイル(xt) 結果ファイル(html)
ブランドにどのような種類のコードがあるかを出力する xtuniq1.sh xtuniq1.xt xtuniq1.html
メーカーにどのような種類のコードがあるかを出力する xtuniq2.sh xtuniq2.xt xtuniq2.html