レコード選択機能を使用する場合に選択フィールド(選択条件)を指定します。
選択フィールドは複数指定することができます。コンマ(,)で区切って複数の選択フィールドを指定した場合は、選択条件の論理積となります。複数の選択フィールドオプション(-p)を指定した場合は、選択条件の論理和となります。
記述形式
-p sel-def [ ,sel-def ...]
sel-def の記述形式
sel-def の記述形式には、以下の2つの形式があります。
sel-def の記述形式1
sel-def の記述形式1では、2つの選択フィールドを比較します。
cmp の左辺は被比較フィールドを、右辺は比較フィールドを示します。
指定した被比較フィールド、または比較フィールドが入力レコードに存在しない場合は、エラーになります。
pos.len typ [ opt ] .cmp.pos.len typ
sel-def の記述形式2
sel-def の記述形式2では、選択フィールドと自己規定値を比較します。
cmp の左辺は被比較フィールドを、右辺は自己規定値を示します。
指定した被比較フィールドが入力レコードに存在しない場合は、エラーになります。
pos.len typ [ opt ] .cmp.self
pos
被比較フィールド、または比較フィールドの位置を指定します。
バイナリファイルとテキストファイル固定フィールド指定の場合は、レコードの先頭を0としたバイト位置を指定します。テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合は、0から数えたフィールド番号を指定します。
len
被比較フィールド、または比較フィールドの長さをバイト数で指定します。
テキストファイル浮動フィールド指定、テキストファイルCSV形式、およびテキストファイルTSV形式の場合、指定したフィールド長よりも長いフィールドが現れた場合は、指定したフィールド長で処理します。指定したフィールド長よりも短いフィールドが現れた場合は、実際のフィールド長で処理します。
typ に符号なし2進数を指定する場合、len には1バイト分のビットを選択するためのマスク値を10進数で指定します。このとき、pos の位置にある1バイトのフィールド値とマスク値の論理積がフィールドの値となります。マスク値は、被比較フィールドと比較フィールドに同じ値を指定します。
各データ形式における指定可能な長さについては、被比較フィールドと比較フィールドに指定可能なデータ形式を参照してください。
注意
テキストファイルCSV形式、およびテキストファイルTSV形式の場合、フィールドを囲むダブルクォーテーション(")は、被比較フィールド、または比較フィールドの長さに含みません。また、ダブルクォーテーション(")で囲まれたフィールド内の2つ連続したダブルクォーテーション("")は、1つのダブルクォーテーション(")として長さを計算します。
例) テキストファイルCSV形式における、被比較フィールドと長さ
被比較フィールド 被比較フィールドとして有効な文字 被比較フィールドの長さ ABC ABC 3バイト "ABC" ABC 3バイト "A""B""C" A"B"C 5バイト "A,B,C" A,B,C 5バイト
self
自己規定値を指定します。
self の記述形式を以下に示します。
self の記述形式1
self の記述形式1では、文字を直接指定します。
'文字列 '
self の記述形式2
self の記述形式2では、文字を16進数で指定します。
x16進数
self の記述形式3
self の記述形式3では、数値、または数字を10進数で指定します。
d10進数
注意
オプション引数で自己規定値を指定する場合の記述方法は使用するシェルにより異なります。代表的なシェルにおける記述例を以下に示します。なお、アーギュメントファイル(アーギュメントファイルオプション(-a))に記述する場合は、Bourneシェルの場合と同じ記述方法とします。
Bourneシェルの場合
オプション引数で自己規定値の文字列を指定する場合は、オプション引数全体をダブルクォーテーション(")で囲みます。
例) 自己規定値として文字列「ABC」を指定する場合
-p "0.3asc.eq.'ABC'"
オプション引数でダブルクォーテーション(")を含んだ自己規定値の文字列を指定する場合は、ダブルクォーテーション(")の前に円マーク(バックスラッシュ)を指定します。$、\、`など、シェルにより特別な意味を持つ文字も同様です。
例) 自己規定値として文字列「"ABC"」を指定する場合
-p "0.5asc.eq.'\"ABC\"'"
オプション引数でクォーテーション(')を含んだ自己規定値の文字列を指定する場合は、クォーテーション(')を2つ続けて指定します。
例) 自己規定値として文字列「'ABC'」を指定する場合
-p "0.5asc.eq.'''ABC'''"
Cシェルの場合
オプション引数で自己規定値の文字列を指定する場合は、文字列の前後のクォーテーション(')の前に円マーク(バックスラッシュ)を指定します。
例) 自己規定値として文字列「ABC」を指定する場合
-p 0.3asc.eq.\'ABC\'
オプション引数でダブルクォーテーション(")を含んだ自己規定値の文字列を指定する場合は、ダブルクォーテーション(")の前に円マーク(バックスラッシュ)を指定します。$、&、(、)、|、\、`、{、}、;、*、<、>、?、空白など、シェルにより特別な意味を持つ文字も同様です。
例) 自己規定値として文字列「"ABC"」を指定する場合
-p 0.5asc.eq.\'\"ABC\"\'
オプション引数でクォーテーション(')を含んだ自己規定値の文字列を指定する場合は、クォーテーション(')の前に円マーク(バックスラッシュ)を付け、2つ続けて指定します。
例) 自己規定値として文字列「'ABC'」を指定する場合
-p 0.5asc.eq.\'\'\'ABC\'\'\'
自己規定値の文字列を指定する場合、文字列は1文字以上である必要があります。
自己規定値の10進数を指定する場合は、符号を指定できます。
自己規定値は、被比較フィールドのデータ形式に合わせてから比較します。
テキストファイル固定フィールド指定の場合は、自己規定値にレコード分離文字を含むことはできません。
テキストファイル浮動フィールド指定の場合は、自己規定値にフィールド分離文字列、またはレコード分離文字を含むことはできません。
テキストファイルCSV形式、およびテキストファイルTSV形式の場合、自己規定値にフィールドを囲むダブルクォーテーション(")を指定する必要はありません。
データ形式が、固定小数点2進数、符号なし固定小数点2進数、8086形式固定小数点2進数、8086形式符号なし固定小数点2進数、システム依存形式固定小数点2進数、またはシステム依存形式符号なしの場合、自己規定値は16バイトで表現できる値まで指定できます。
typ
被比較フィールドと比較フィールドのデータ形式を指定します。
指定可能なデータ形式については、被比較フィールドと比較フィールドに指定可能なデータ形式を参照してください。
注意
被比較フィールドと比較フィールドのデータ形式が異なるときは、被比較フィールドのデータ形式に合わせてから比較します。
被比較フィールドのデータ形式の種類が文字の場合、被比較フィールドと比較フィールドの短い方の長さで比較します。
比較フィールドのデータ形式の種類が数値、または数字の場合、被比較フィールドと比較フィールドの短い方を長い方の長さに合わせて比較します。
ASCIIコードは、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がASCIIコード系の場合に指定できます。
EBCDICコードは、入力コード系オプション(-q)がEBCDICコード系の場合に指定できます。
EUCファイルコード、EUC2バイトプロセスコード、およびEUC4バイトプロセスコードは、入力コード系オプション(-q)がASCIIコード系で、環境変数LANGがC、またはEUCコードのlocaleの場合に指定できます。
Unicode UCS-2形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UCS-2形式)の場合に指定できます。どちらの場合も、環境変数LANGがC、またはUTF-8のlocaleの場合に指定できます。
Unicode UTF-32形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UTF-32形式)の場合に指定できます。どちらの場合も、環境変数LANGがC、またはUTF-8のlocaleの場合に指定できます。
Unicode UTF-8形式は、バイナリファイルの場合、入力コード系オプション(-q)がEBCDICコード系以外の場合に指定できます。テキストファイルの場合、入力コード系オプション(-q)がUnicode系(UTF-8形式)の場合に指定できます。どちらの場合も、環境変数LANGがC、またはUTF-8のlocaleの場合に指定できます。
opt
被比較フィールドの操作を指定します。
指定可能な操作を以下に示します。バイナリファイルの場合は、lが指定できます。テキストファイルの場合は、全ての被比較フィールドの操作が指定できます。複数の操作を指定する場合は、続けて記述します。
opt | 意味 |
---|---|
b | フィールドの先頭の空白とタブを無視します。 |
d | 空白と英数字だけを比較の対象とします。 |
i | 制御文字コードを無視します。 |
j | 英小文字を英大文字として比較します。 |
l | 環境変数LC_COLLATEで定義した照合順序で比較します。 |
n | 符号を含んだ数字の文字列を算術的な値で比較します。 |
注意
被比較フィールド、および比較フィールドのデータ形式に照合順序変更を指定した場合、被比較フィールドの操作は指定できません。
cmp
比較演算子を指定します。
以下に比較演算子とその意味を示します。
比較演算子 | 意味(真の条件) |
---|---|
eq | 被比較フィールド = 比較フィールド、または自己規定値 |
ne | 被比較フィールド ≠ 比較フィールド、または自己規定値 |
gt | 被比較フィールド > 比較フィールド、または自己規定値 |
ge | 被比較フィールド ≧ 比較フィールド、または自己規定値 |
lt | 被比較フィールド < 比較フィールド、または自己規定値 |
le | 被比較フィールド ≦ 比較フィールド、または自己規定値 |
注意
被比較フィールドが、EUCファイルコード、EUC2バイトプロセスコード、およびEUC4バイトプロセスコードの場合は、環境変数LC_COLLATEに従った照合順序で比較します。
記述例
例
12バイト目の位置から長さ4バイトの外部10進数のフィールドと32バイト目の位置から長さ4バイトの内部10進数のフィールドが等しいレコードを処理の対象とする場合は、以下のように指定します。
-p 11.4zdl.eq.31.4pdl
12バイト目の位置から長さ4バイトの固定小数点2進数のフィールドが「30」以上のレコードを選択する場合は、以下のように指定します。
-p 11.4fbi.ge.d30
10バイト目の位置から長さ4バイトの外部10進数のフィールドが「-1000」より小さいレコードを選択する場合は、以下のように指定します。
-p 9.4zdl.lt.d-1000
10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abcde」があるレコードを選択する場合は、以下のように指定します。
Bourneシェルの場合
-p "9.5asc.eq.'abcde'"
Cシェルの場合
-p 9.5asc.eq.\'abcde\'
10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「ab"cd」があるレコードを選択する場合は、以下のように指定します。
Bourneシェルの場合
-p "9.5asc.eq.'ab\"cd'"
Cシェルの場合
-p 9.5asc.eq.\'ab\"cd\'
10バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abc'd」があるレコードを選択する場合は、以下のように指定します。
Bourneシェルの場合
-p "9.5asc.eq.'abc''d'"
Cシェルの場合
-p 9.5asc.eq.\'abc\'\'d\'
4バイト目の位置から長さ3バイトのASCIIコードのフィールドに文字列「abc」があり、かつ10バイト目の位置から長さ3バイトのASCIIコードのフィールドに文字列「abc」があるレコード、または4バイト目の位置から長さ5バイトのASCIIコードのフィールドに文字列「abcde」があるレコードを選択する場合は、以下のように指定します。
Bourneシェルの場合
-p "3.3asc.eq.'abc'","9.3asc.eq.'abc'" -p "3.5asc.eq.'abcde'"
Cシェルの場合
-p 3.3asc.eq.\'abc\',9.3asc.eq.\'abc\' -p 3.5asc.eq.\'abcde\'