xtsortは、レコードを並べ換えるコマンドである。
ここでは、先に作成したスクリプトxtagg.shを再利用することにする。FDで、前章でおこなった手順で、xtagg.shをxtsot.shの名前でコピーしておこう。
新しくコピーされたファイル"xtsort.sh"を編集する。xtagg.shでは、日別数量金額合計が求まっている。そこでxtaggコマンドの後にxtsortコマンドを加え、日付を逆順にソートしてみる。
xtsortコマンドでは、並べ替えたい項目を"-k"オプションで指定する。そして、逆順および数値順の指定は項目名に続けて"%r"および"%n"でそれぞれ指定する。複数の項目で並べたいときには、逆順および数値順の指定をそれぞれの項目ごとに指定することができる。この例では日付を降順に並べるので「xtsot
-k 日付%r」と指定すればよい。
そして最後に、出力ファイル名(xtsort.xt)、およびコメントの変更も忘れずに。
これらの変更を反映させたスクリプトを下図に示しておく。
#/bin/bash #=============================================================== # MUSASHI bash script #=============================================================== #---- タイトル title="チュートリアル" #---- コメント comment="xtsort" #---- 各種変数(適宜修正すること) inPath="/mnt/h00/prm/tutorial" #--------------------------------------------------------------- # コマンド #--------------------------------------------------------------- xtcut -f 日付,数量,金額 -i $inPath/dat.xt.gz | xtagg -k 日付 -f 数量:合計数量,金額:合計金額 -c sum | xtsort -k 日付%r | xtheader -l "$title" -c "$comment" -o xtsort.xt #=============================================================== |
結果は、下図のように、日付項目が降順で並べ変わっていることが確認できるであろう。
<?xml version="1.0" encoding="euc-jp"?> <xmltbl version="1.00"> <header> <title> チュートリアル </title> <comment> xtsort </comment> <field no="1"> <name>日付</name> <sort priority="1"> </sort> </field> <field no="2"> <name>合計数量</name> <sort priority="2"> </sort> </field> <field no="3"> <name>合計金額</name> <sort priority="3"> </sort> </field> </header> <body><![CDATA[ 19960131 595 351001 19960130 562 260900 19960129 503 232898 19960128 419 231647 19960127 699 312099 19960126 643 276340 19960125 743 330867 19960124 524 215801 19960123 590 268325 19960122 375 175588 19960121 456 212493 19960120 576 250142 19960119 542 235548 19960118 502 248289 19960117 536 268251 19960116 626 322327 19960115 404 207313 19960114 325 170098 19960113 632 286111 19960112 642 315335 19960111 464 220741 19960110 487 213515 19960109 515 241954 19960108 365 192866 19960107 345 186710 19960106 376 202936 19960105 330 170023 ]]></body> </xmltbl> |
ここで並べ替えに関するいくつかの例を示しておく。
金額昇順:金額項目は数値として並べ替えたいので、「-k 金額%n」と指定する。
金額降順:さらに降順指定を加え、「-k 金額%n%r」と指定する(rとnはどちらが先でも問題ない)。
日付降順&金額昇順:このように複数項目を指定した場合の意味は、「まず日付を降順で並べ換え、もし日付で同じ値があった場合は金額で昇順に並べ換える」ということである。指定は、「-k
日付%r,金額%n」となる。これらの指定の動作確認は練習課題の中で行ってもらいたい。
次のようなデータを作成しよう。