Tukubaiオンラインコマンドマニュアル

self(USP Lab(1))

【名前】

self : 指定したフィールドのデータ取り出し

【書式】

Usage   : self f1 f2 ... file
        : self -d f1 f2 ... string
Version : Wed Dec 14 15:20:01 JST 2011
        : OpenUSP (LINUX+FREEBSD/PYTHON2.4/UTF-8)

【説明】

<file>ファイルから指定したフィールドのデータだけを取り出して出力する(self=
select field)。<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はフィールド中の部分を切り出して出力することもできる。処理としては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
ｳｴｵｶ
$

【注意】

入力ファイルが改行文字で終了していない場合、つまり行が尻切れになっている場合は
ファイル末尾に改行文字が追加されて完結した行になる。

【バグ】

数字名のファイルを使用してはならない。もし10という名前のファイルが存在すると
self 1 10はファイル名が10であるファイルから第1フィールドを抽出するという動作を
して、標準入力ファイルから第1および第10フィールドを抽出するという動作をしなくな
る。ただし2のように数字1文字だけを指定した場合は、そのファイルが存在しても、そ
れは無視してフィールドとして扱う。

【バグ】

文字列切り出し指定において、切り取りや長さが文字の区切りに一致しないときにはエ
ラーとなる。

$ echo ＵＳＰ研究所 | self 1.2.4
Error[self] : Rec 1. エラー
$

フィールドの幅より大きい開始位置を指定してもエラーとなる。

$ echo ＵＳＰ研究所 | self 1.20
Error[self] : Rec 1. エラー
$

【関連項目】

delf(USP Lab(1))

last modified: 2012-04-12 19:30:44
Contact us: uecinfo@usp-lab.com
Copyright (c) 2012 Universal Shell Programming Laboratory All Rights Reserved.
