rangeの指定は"From_To"の形で与えられる。Fromが以上条件でToが以下条件である(「以上」、「以下」であり「より大きい」、「より小さい」ではない)。例えば、"range=100_200"は「100以上かつ200以下」を意味する。
"_"を省略して数値のみが指定されたときはその数値に一致する行を選択する。
FromとToの値として小数点やマイナス数値の指定も可能である。例えば、"range=-10_20.5"は「−10以上かつ20.5以下」を意味する。
FromもしくはToを省略することによって、「To以下」もしくは「From以上」といった単一の条件を指定することができる。例えば、"range=_100"は「100以下」を意味し、"range=100_"は「100以上」を意味する。もちろん、"range=_"といった指定も可能であるが、現在のところ特別有用な意味は見出せない。
条件を複数指定することも可能である。複数指定した場合、それらはOR条件として扱われる。複数条件は","(カンマ)で区切らなければならない。例えば、"range=-10_-5,5_10"は「(−10以上かつ−5以下)もしくは(5以上かつ10以下)」を意味する。
fieldで指定する項目の数は一つだけである。例えば、"field=3,4,5"といった指定は無効である。
xselnumとxdelnumの関係をvalueに指定したカンマで区切られた複数条件について示しておく。各条件をABCとすると、xselnumは「AorBorC」でxdelnumは「not(AorBorC)=(notA)and(notB)and(notC)となる。
制限:valueで指定できる数値範囲の数は255個以下である。
(開発者弁)当初は、範囲指定に"~"(チルダ)を使う計画であったが、チルダはUNIXにおいてホームディレクトリを意味する特殊文字のため、いちいちエスケープする必要が生じる。そこで不本意ながら"_"(アンダーバー)を使うことにした。
条件を複数指定することも可能である。複数指定した場合、それらはOR条件として扱われる。複数条件は","(カンマ)で区切らなければならない。例えば、"string=abc,xyz"は「abcもしくはxyzに一致」を意味する。
valueで指定する文字列の中にshellが特殊文字として解釈する文字("!","*","?"など)が含まれる場合は、エスケープ文字を使うことによって(例えばbashであればシングルクォーテーションによって文字列をくくる)そのshellに解釈させないようにしなければならない。
現在のところ、","を含む文字列を条件として与えることはできない。
fieldで指定する項目の数は一つだけである。例えば、"field=3,4,5"といった指定は無効である。
valueで指定する項目が多い場合はxselmstを利用すればよい。
xselstrとxdelstrの関係をvalueに指定したカンマで区切られた複数条件について示しておく。各条件をABCとすると、xselstrは「AorBorC」でxdelstrは「not(AorBorC)=(notA)and(notB)and(notC)となる。
Xコマンドでは#で始まる行と空白行を特殊扱いするため、他のUNIXコマンドなどを直接利用すると不具合が生じる可能性がある。そこで、このコマンドは、このようなXコマンド特殊のデータ構造を除外する。
入力ファイル、マスターファイルともに、比較される項目でそれぞれソートされている必要がある。
fieldで複数項目が指定された場合、そのいずれかの項目でnull値が見つかれば選択される(すなわちor条件となる)。
xselstrが単一行を対象としているのに対して、xselkeystrではkeyの値が同じ複数行を対象としている。それ以外はxselstrと同等である(xselstr参照)。
このコマンドの利用例として、商品Aもしくは商品Bが含まれるレシートを選択し、含まれていないレシート(xdelkeystrによる)と比較する分析をあげることができる。さらに、このコマンドを2回連続で使うことにより、商品Aと商品Bの両方が含まれるレシートを選択することもできる(いわゆるバスケット分析の一部)。
keyが同じ値の行をすべて一時的にメモリに蓄えるため、keyの値が同じ行が多数存在する場合は、メモリ不足をまねき、エラーとなる可能性もある。ちなみに、一時的なメモリの確保はrealloc関数により動的に行っている。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
xselnulが単一行を対象としているのに対して、xselkeynulではkeyの値が同じ複数行を対象としている。それ以外はxselnulと同等である(xselnul参照)。
keyが同じ値の行をすべて一時的にメモリに蓄えるため、keyの値が同じ行が多数存在する場合は、メモリ不足をまねき、エラーとなる可能性もある。ちなみに、一時的なメモリの確保はrealloc関数により動的に行っている。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
xselnumが単一行を対象としているのに対して、xselkeynumではkeyの値が同じ複数行を対象としている。それ以外はxselnumと同等である(xselnum参照)。
keyが同じ値の行をすべて一時的にメモリに蓄えるため、keyの値が同じ行が多数存在する場合は、メモリ不足をまねき、エラーとなる可能性もある。ちなみに、一時的なメモリの確保はrealloc関数により動的に行っている。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
もしbestで指定した値より少ない行数しかなければ、その行数のみが選択される。bestに0を指定すれば何も選択されない。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
例えば"199601 abc 10....."というデータに対して"xsep field=1 path=tmp/MONTH"を実行すれば、このデータは、カレントディレクトリのtmpというディレクトリの下に"MONTH199601"という名前のファイルとして書き出される。
fieldで複数項目を指定した場合、各項目値が"_"によって区切られてファイル名となる。例えば"199601 abc"というデータについて"field=1,2"と指定すれば、このデータは"199601_abc"というファイル名に書き出される。
ファイルへの書き出しは追加モードであるため、もしxsepを実行する前に同一名のファイルがあれば、その後ろに追加されるので注意が必要である。新規にファイルを書き出したければ、xsepの前にrm等のコマンドで明示的にファイルを削除しておく必要がある。
fieldで指定した項目の値にnull値("*")があったとしても、無視せずに"*"をファイル名として書き出す。
制限:pathを含めたファイル名の長さは、このコマンドとしては1024文字までである。しかし使用するOSのファイルシステムによっては長いファイル名は無効となる可能性がある。
連結文字をなくしたければ、token=""のようにnull文字を指定する必要がある。
fieldで指定されていない項目に関しては、同じキー項目値を持つ最下行の値が出力される。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
fieldで指定した項目の値に一つでもnull値("*")が含まれていれば、結果もnull値となる。もしnull値を0として扱いたいならば、事前にxnultoコマンドでnull値を0に置換しておけばよい。null値を無視して計算したければ、事前にxdelnulコマンドでnull値の行を省いておけばよい。
fieldで指定されていない項目に関しては、同じキー項目値を持つ最下行の値が出力される。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
fieldで指定した項目の値に一つでもnull値("*")が含まれていれば、結果もnull値となる。もしnull値を0として扱いたいならば、事前にxnultoコマンドでnull値を0に置換しておけばよい。null値を無視して計算したければ、事前にxdelnulコマンドでnull値の行を省いておけばよい。
fieldで指定されていない項目に関しては、同じキー項目値を持つ最下行の値が出力される。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
fieldで指定した項目の値に一つでもnull値("*")が含まれていれば、結果もnull値となる。もしnull値を0として扱いたいならば、事前にxnultoコマンドでnull値を0に置換しておけばよい。null値を無視して計算したければ、事前にxdelnulコマンドでnull値の行を省いておけばよい。
fieldで指定されていない項目に関しては、同じキー項目値を持つ最下行の値が出力される。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
fieldで指定した項目の値に一つでもnull値("*")が含まれていれば、結果もnull値となる。もしnull値を0として扱いたいならば、事前にxnultoコマンドでnull値を0に置換しておけばよい。null値を無視して計算したければ、事前にxdelnulコマンドでnull値の行を省いておけばよい。
fieldで指定されていない項目に関しては、同じキー項目値を持つ最下行の値が出力される。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
fieldで指定した項目の値に一つでもnull値("*")が含まれていれば、結果もnull値となる。もしnull値を0として扱いたいならば、事前にxnultoコマンドでnull値を0に置換しておけばよい。null値を無視して計算したければ、事前にxdelnulコマンドでnull値の行を省いておけばよい。
keyで指定されていない項目に関しては、同じキー項目値を持つ最下行の値が出力される。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
keyが同じ値の行をすべて一時的にメモリに蓄えるため、keyの値が同じ行が多数存在する場合は、メモリ不足をまねき、エラーとなる可能性もある。ちなみに、一時的なメモリの確保はrealloc関数により動的に行っている。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
fieldで指定した項目の値がnull値("*")の場合、その値は計算に反映されないが行としてはnull値の結果をもって出力される。もしnull値を0として扱いたいならば、事前にxnultoコマンドでnull値を0に置換しておけばよい。
合計が0の場合には0割り算が発生することになるため結果としてnull値("*")を出力する。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
fieldで指定した項目の値がnull値("*")の場合、その値は計算に反映されないが行としてはnull値の結果をもって出力される。もしnull値を0として扱いたいならば、事前にxnultoコマンドでnull値を0に置換しておけばよい。
代表的な利用方法として、顧客の来店日付データに対して日付データをスライドさせ、日付計算すれば何日間隔で来店したかをつかむことができる。
入力ファイルはkeyで指定した項目で事前にソートされていなければならない。
"key=0"が指定されたとき、全行が同じキー値を持つものとして処理される。
もし、マスターファイルに同じ値がなければnull値("*")を結合する。その際、fieldで指定した項目の数と同等の数のnull値("*")を結合する。
入力ファイル、マスターファイルともに、比較される項目でそれぞれソートされている必要がある。
条件はxselnumと似ている。例えば"-10_10"のようにアンダーバーを挟んで数値範囲を指定する。「左の数字以上、右の数字未満(例では-10以上10未満)」を意味する。
また以上と未満の数値を省略すれば最小値、最大値を表す。例えば"_10"は「10未満」意味し、"10_"は「10以上」を意味する。
もし、ファイルに同じ値がなければnull値("*")を結合する。その際、filefieldで指定した項目の数と同等の数のnull値("*")を結合する。
fieldで指定した項目がnull値の場合も同様に、null値を結合する。
入力ファイル、ファイルともに、比較される項目でそれぞれソートされている必要はない。
fileの第一項目の条件指定が行によって重複していた場合、より上の行の条件が優先される。
fileをすべて一時的にメモリに蓄えるため、fileの行数が多い場合は、メモリ不足をまねき、エラーとなる可能性もある。ちなみに、一時的なメモリの確保はrealloc関数により動的に行っている。
もしfileで指定したファイルの行数がインファイルの行数よりも長い場合、もしくは逆にインファイルの行数がfileで指定したファイルの行数よりも長い場合は、短い方の行がnull値("*")として出力される。
valueで指定した値は一切解釈されることはないので二項目を追加したければ、スペースで区切った値を指定する必要がある。そこでスペースは多くのシェルにおいて特殊文字となるために、シングルクォーテーション等でシェルに解釈させないようにしなければならない。
fileで指定したファイルに複数行数あったとしても、先頭行のみが対象となり、その他の内容は無視される。
fieldで指定した項目の値の中に一つでもnull値("*")が含まれていれば、その計算結果もnull値となる。もしnull値を0として扱いたければ、xnultoコマンドで事前にnull値を0に変換しておけばよい。
field1もしくはfield2のいずれかの項目の値にnull値("*")が含まれていれば、その計算結果もnull値となる。もしnull値を0として扱いたければ、xnultoコマンドで事前にnull値を0に変換しておけばよい。
field1もしくはfield2のいずれかの項目の値にnull値("*")が含まれていれば、その計算結果もnull値となる。もしnull値を0として扱いたければ、xnultoコマンドで事前にnull値を0に変換しておけばよい。
field1もしくはfield2のいずれかの項目の値にnull値("*")が含まれていれば、その計算結果もnull値となる。もしnull値を0として扱いたければ、xnultoコマンドで事前にnull値を0に変換しておけばよい。
また、field2の値が0の場合は、0割り算のエラーとなるため、結果はnull値("*")となる。
制限:通常の32bitOSであれば、乱数の最大値はINT型の最大値(2147483647)と等しい。seedの最大値も同様である。
日付項目は"yyyymmdd"の固定長フォーマットで与えらる。しかしながらこれは西暦10000年問題の元凶となる。将来的には年月日をそれぞれ別項目と持つべきであろう。
時間項目は"hhmmss"の固定長フォーマットで与えられている。
ミレニアム問題(4年に一度は閏年、100年に一度は非閏年、400年に一度は閏年)にも対応している。
field1もしくはfield2がnull値ならば結果もnull値となる。
制限:グレゴリオ暦が採用された西暦1582年10月15日から9999年までに対応している。
ミレニアム問題(4年に一度は閏年、100年に一度は非閏年、400年に一度は閏年)にも対応している。
日付と時間項目が別れている場合、xconcatinateコマンドで一つの項目としておく必要がある。
field1もしくはfield2がnull値ならば結果もnull値となる。
ミレニアム問題(4年に一度は閏年、100年に一度は非閏年、400年に一度は閏年)にも対応している。
field1もしくはfield2がnull値ならば結果もnull値となる。
制限:年月日はグレゴリオ暦が採用された西暦1582年10月15日から、日数はlong制限(2147483647)まで可能である。
ミレニアム問題(4年に一度は閏年、100年に一度は非閏年、400年に一度は閏年)にも対応している。
fieldがnull値ならば結果もnull値となる。
制限:年月日はグレゴリオ暦が採用された西暦1582年10月15日から対応している。
1989/12/31より前の日付に関してはマイナスの値として出力される。
fieldがnull値ならば結果もnull値となる。
制限:年月日はグレゴリオ暦が採用された西暦1582年10月15日から、週番号はlong制限(2147483647)まで可能である。
ミレニアム問題(4年に一度は閏年、100年に一度は非閏年、400年に一度は閏年)にも対応している。
field1もしくはfield2がnull値ならば結果もnull値となる。
制限:年月日はグレゴリオ暦が採用された西暦1582年10月15日から対応している。
ミレニアム問題(4年に一度は閏年、100年に一度は非閏年、400年に一度は閏年)にも対応している。
field1もしくはfield2がnull値ならば結果もnull値となる。
制限:年月日はグレゴリオ暦が採用された西暦1582年10月15日から対応している。
ミレニアム問題(4年に一度は閏年、100年に一度は非閏年、400年に一度は閏年)にも対応している。
field1もしくはfield2がnull値ならば結果もnull値となる。
制限:年月日はグレゴリオ暦が採用された西暦1582年10月15日から対応している。
多くのXコマンドはnull値に対する演算結果はnull値となる。一方でnull値を0として扱いたいことがある。そのような時に用いる。また、null値の種類を明示したいときにも用いられる。
全行数がrecordsで指定した値の倍数でなければ、足りない行数をnull値で出力する。またこのコマンドは単純に各行を一行に変換しているだけのため、元の項目数が一致していなければ結果項目の数も一致しなくなる。
positionで指定した数値が不の場合、fieldで指定した項目の第pos+1を四捨五入し、第pos桁と以下0を出力する。
positionの値と実際の数値との関係を例示すると、"1234.5678"において左から順番に-4,-3,-2,-1,0,1,2,3,4となる。小数点が0となるが、0は-1と同じ動作をする。
positionで指定した数値が不の場合、fieldで指定した項目の第pos+1を切り捨て、第pos桁と以下0を出力する。
positionの値と実際の数値との関係を例示すると、"1234.5678"において左から順番に-4,-3,-2,-1,0,1,2,3,4となる。小数点が0となるが、0は-1と同じ動作をする。
positionで指定した数値が不の場合、fieldで指定した項目の第pos+1を切り上げ、第pos桁と以下0を出力する。
positionの値と実際の数値との関係を例示すると、"1234.5678"において左から順番に-4,-3,-2,-1,0,1,2,3,4となる。小数点が0となるが、0は-1と同じ動作をする。
小数点以下の数値に対してはコンマをつけない。
マイナス数値にも対応している。
出力の形式は"set 変数名=値"となる。実行結果をファイルに出力し、そのファイルをsourceコマンドで実行すれば環境変数としてセットされる。
情報の種類は以下の通りで、情報の獲得に時間をほとんど必要としない。
FNAME :ファイル名
ADATE :最新更新日付
ATIME :最新更新時間
CDATE :初期作成日付
CTIME :初期作成時間
SIZE :バイト数
このコマンドは、どのような商品の組み合わせの関連購入が多いかに関する分析、いわゆるバスケット分析の際によく利用する。顧客のレシート番号をkeyで指定し、fieldに商品コードを指定し、さらにvalueに2を指定すれば、2商品のありうる組み合わせが全て生成される。その結果をxcountなどのコマンドで集計すれば、どの商品の組み合わせが多く売れているかわかる。またvalueで3以上を指定することによって、3商品以上の関連性がわかる。
結果はkeyで指定した項目値と組み合わせの結果値のみ出力される。
keyが同じ値の行のfield値はすべて一時的にメモリに蓄えられるため、keyの値が同じ行が多数存在する場合は、メモリ不足をまねき、エラーとなる可能性もある。ちなみに、一時的なメモリの確保はrealloc関数により動的に行っている。
データ行数やvalueの与え方によっては、データが爆発的に増えるので注意を要する。
xbasketコマンドが組み合わせであったのに対し、このコマンドでは順列を生成する(xbasket参照)。
データ行数やvalueの与え方によっては、データが爆発的に増えるので注意を要する。
パラメータとしてkey=,title=,head=,field=,position,foot=を指定することができる。これらのパラメータは省略できる。
key=:データの第一項目からkeyで指定した項目番号までの項目について、同じ値に関しては、複数行にまたがってセルを表示し、かつ強調表示にする。
title=:ここで指定されたファイルのデータをタイトルとしてみなし、帳票の最上行から表示する。表示は、強調、サイズ=5、左詰である。
head=:ここで指定されたファイルのデータをヘッダーデータとしてみなし、タイトルの次に表示する。表示は、サイズ=2、左詰である。
foot=:ここで指定されたファイルのデータをフッターデータとしてみなし、帳票の最下行から表示する。表示は、サイズ=2、左詰である。
field=:ここで指定されたファイルのデータを項目名データとしてみなし、同じテーブル内の最上位に表示する。このデータには次のような構造上の規約がある。
・項目名をツリー形式で指定できる。
例えば、以下のような2行の項目名データは、1998年と1999年のそれぞれに数量と金額がぶら下がるツリー形式である。
商品名 1998年 1998年 1999年 1999年
商品名 数量 金額 数量 金額
これらのツリー形式は複数列にまたがったセルとして表示される。
項目名の表示は、強調、網掛け、中央揃えである。
position=:ここで指定されたファイルのデータをデータの表示位置データとしてみなす。"L"は左揃え、"R"は右揃え、"C"は中央揃えである。項目の数だけスペースで区切って指定しなければならない。