Tukubaiオンラインコマンドマニュアル - self(1)
self(1)
【名前】
self
: 指定したフィールドのデータ取り出し
【書式】
Usage : self <f1> <f2> ... <file> : self -d <f1> <f2> ... <string> Version : Sat Aug 20 22:29:15 JST 2022 Edition : 1
【説明】
fileから指定したフィールドのデータだけを取り出して出力する(self=select
field)。第0フィールドは行全体を意味する。fileの指定がないとき、あるいはファイル名が-
の時は、標準入力よりデータを取り込む。-d
オプションが指定された場合、引数の文字列に対して処理が適用される。
【例1】
テキストデータの第4フィールドと第2フィールドを取り出して出力する。
$ cat data 0000000 浜地______ 50 F 91 59 20 76 54 0000001 鈴田______ 50 F 46 39 8 5 21 0000003 杉山______ 26 F 30 50 71 36 30 0000004 白土______ 40 M 58 71 20 10 6 0000005 崎村______ 50 F 82 79 16 21 80 $
$ self 4 2 data F 浜地______ F 鈴田______ F 杉山______ M 白土______ F 崎村______ $
【例2】
self(1)はフィールド中の部分を切り出して出力することもできる。処理としてはawk(1)のsubstr関数と同じ処理となる。
たとえば第1フィールドの4文字目以降を出力するには次のようにコマンドを実行する。
$ self 1.4 2 data 0000 浜地______ 0001 鈴田______ 0003 杉山______ 0004 白土______ 0005 崎村______ $
第2フィールドの1文字目から半角4文字分(全角2文字分)出力する。
$ self 2.1.4 3 data 浜地 50 鈴田 50 杉山 26 白土 40 崎村 50 $
【例3】
0で行全体を指定できる。
$ self 0 data 0000000 浜地______ 50 F 91 59 20 76 54 0000001 鈴田______ 50 F 46 39 8 5 21 0000003 杉山______ 26 F 30 50 71 36 30 0000004 白土______ 40 M 58 71 20 10 6 0000005 崎村______ 50 F 82 79 16 21 80 $
$ self 4 0 data F 0000000 浜地______ 50 F 91 59 20 76 54 F 0000001 鈴田______ 50 F 46 39 8 5 21 F 0000003 杉山______ 26 F 30 50 71 36 30 M 0000004 白土______ 40 M 58 71 20 10 6 F 0000005 崎村______ 50 F 82 79 16 21 80 $
【例4】
連続したフィールドも記述できる。
$ self 2/5 data 浜地______ 50 F 91 鈴田______ 50 F 46 杉山______ 26 F 30 白土______ 40 M 58 崎村______ 50 F 82 $
【例5】
NF
(現在の行のフィールド数)を使用することができる。
$ self 1 NF-3 NF data 0000000 59 54 0000001 39 21 0000003 50 30 0000004 71 6 0000005 79 80 $
【例6】
複数の空白があるフィールドを1つの空白にすることができる。
$ cat data2 a b c d e $
$ self 1/NF data2 a b c d e $
【例7】
ダイレクトモードを使用して文字列を加工することができる。
$ self -d 1.1.4 "20070401 12345" 2007 $
【例8】
self
の切り出し指定は画面表示長の半角文字分を1として扱う。
$ echo アイウエオカキクケコ | self 1.3.4 ウエオカ $
【注意】
入力ファイルが改行文字で終了していない場合、つまり行が尻切れになっている場合はファイル末尾に改行文字が追加されて完結した行になる。
-d
指定がないとき 数字名のファイルを使用してはならない。 もし10という名前のファイルが存在してもself
1 10は標準入力ファイルから第1および第10フィールドを抽出するという動作をする 数字名以外であっても最後のパラメータがフィールド指定形式に見合った文字列のとき それはファイル名ではなくフィールド指定とみなされて入力は標準入力から行なわれる
また、文字列切り出し指定において、切り取りや長さが文字の区切りに一致しないときにはエラーとなる。
$ echo USP研究所 | self 1.2.4 Errorself] : Rec 1. エラー $
フィールドの幅より大きい開始位置を指定してもエラーとなる。
$ echo USP研究所 | self 1.20 Errorself] : Rec 1. エラー $