初級コマンド編 項目の選択(xtcut)

FDで"S"(大文字)を押すと新しいスクリプトの雛型が作成される。ここではファイル名をxtcutとしておこう。

ここで作成されたスクリプトはxtcut.shとなる。
このファイルにカーソルを合わせ"e"を押せばスクリプトを編集できるようになる(viエディタの起動)。

スクリプトの雛型は下図のようになっている。ここで"#"で始まる行はコメント行で、このスクリプトの実行に何ら影響しない(但し、1行目は例外で、"#/bin/bash"は必ず必要となる。これはこのスクリプトを/bin/bashというプログラムに解釈・実行させるという意味である)。また空白の行も無視される。

ここでtitle=およびcomment=の行には作成されるデータのタイトルを入力する。
titleには「チュートリアル」と、commentには「xtcut」とでも指定しておこう。
そしてinPathには入力データのあるディレクトリパスを指定する。ここでは"/mnt/h00/prm/tutorial"である。

 販売データには数多くの項目が含まれている。ここでは、まず「日付」、「数量」、「金額」の項目を選択する処理を考える。項目の選択にはxtcutコマンドを用いる。
"-i"に入力データファイル名を、"-o"に出力データファイル名を、そして"-f"で選択したい項目名を指定する。
 入力ファイルには"$inPath/dat.xt.gz"と指定する。ここで$inPathは変数の展開を意味する。スクリプトのはじめに指定した「inPath="/home/public/tutorial/syokyu"によって、変数inPathに指定の文字列が格納される。そして$inPathによって、変数inPathの内容が展開され、"-i $inPath/dat.xt"は、"-i /mnt/h00/prm/tutorial/dat.xt.gz"に展開される。
 出力ファイルには"xtcut.xt"と指定しておく。ここではファイル名の前に、入力データで指定したようなディレクトリパス名(/mnt/h00...など)を付けていないので、カレントディレクトリ(FDで現在開いているディレクトリ)に作成される。またファイル名には必ず".xt"のサフィックス(接尾語)を付けておくこと。
 項目名は入力データ上に存在する項目名でなければならない。ここでは"-f 日付,数量,金額"と指定する。
そしてxtcutの行の最後に縦棒"|"(「パイプ記号」と呼ばれる)があるが消しておく(後で解説)。
次のxtheaderの行はここでは、コメントアウトしておく(#を先頭につける)。
これらの変更を加えたスクリプトは下図のようになるであろう。

間違いないことを確認すれば保存しエディタを終了する(viでは":wq")
再びFDの画面になったところで、このxtcut.shを実行しよう。xtcut.shにカーソルを合わせ、"X"(大文字)を押すと
「1:表で実行, 2:裏で実行, 9:キャンセル」と出てくるので1を入力する。
すると「実行中...」と表示され、直ぐに処理は終了するはずである。
処理が終れば数行のメッセージが表示され、「完了」と表示されるはずである(下図参照)。
もし、いくら待ってもそのようなメッセージが出てこなければ何か間違っている可能性がある。
Ctrl+cで強制的に終了し、再度スクリプトを編集する。
メッセージはでてきたが、その中に<ERROR>を含むタグがあれば、そのメッセージのエラーが生じたことを示しているので、再度スクリプトを編集する。

うまく終了できれば、新しくxtcut.xtというファイルができているはずである。
内容を確認すれば、下図のように、日付、数量、金額の三つの項目が選択されているのが確認できるであろう。

次に、先のスクリプトでコメントアウトしたxtheaderについて学習しよう。
上図に示されたデータを見てもわかるように、タイトルとコメントは、入力データである"/mnt/h00/prm/tutorial/dat.xt.gz"のものがそのまま使われている。xtheaderを使うことによって、このタイトルとコメントを変更することができる。
そこで再度xtcut.shを編集する。
まず、xtcutの行の"-o xtcut.xt"を削除し、最後の行に縦棒"|"を入れておく。そして、xtheaderのコメントをはずす("#"をはずす)。このことにより、xtcutで処理した結果を xtcut.xtに書き込むのではなく、パイプラインを通して次の行のコマンド(xtheader)に送り込むことができる。
xtheaderはデータの<title>、<comment>、<field>タグを変更するためのコマンドである。
xtheaderでは"-l"にタイトル、"-c"にコメントを指定する。ここではそれぞれ"$title","$comment"が指定されているが、これは、スクリプトの上部で指定した変数がそのままここに展開されると考えればよい。
そしてxtheaderの処理が終ったら、その結果をxtcut.xtに書き込むように"-o"パラメータを変更する。
これらの変更を反映させたスクリプトを下図に示しておく。

このスクリプトを保存し、実行する。タイトルとコメントが変更されていることが確認できるであろう。

OnePoint タイトルとコメントの重要性
このようにタイトルとコメントを結果のデータに入力することによって、後でデータを閲覧したときに、何のデータかを確認することができる。xtheaderなしにデータを書き出すことも可能であるが、後で何のデータか分からなくなることを防ぐために、必ずタイトルとコメントは入れるようにしておこう。

OnePoint 実行時のメッセージ
 MUSASHIでは全てのコマンドにおいて、実行時に処理内容に関するメッセージを書き出す。FDにて実行すると画面上に<exec>タグで始まるメッセージが表示されるのを見たであろう。どのコマンドがいつ起動され、いつ終了したか、どのようなオプションが指定されたか、どのファイルから読み込んだか、どのファイルに書き込んだか、どのようなエラーが生じたか(最重要!!)といった情報がXML形式で出力される。さらにFDにてスクリプトを”X"で実行すると、メッセージを画面に出力するのと同時に、カレントディレクトリの「log」というファイルにも画面と同じ内容のメッセージを書き出す。FDでは"x"(小文字)でもスクリプトを実行できるが、"X"で実行する時との大きな違いは、この「log」ファイルを吐き出すかどうかである。
 もし結果データが思い通りのものでなければ「log」ファイルをチェックすれば何か解決の糸口になるかもしれない。

練習課題

元のデータから、様々な項目を抜き出して見よう。