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

self

[名前]

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

self=select field

【書式】

Usage   : self f1 f2 ... 
        : self -d f1 f2 ... 
Option  : -n
Version : Thu Mar 26 16:56:46 JST 2015

【説明】

ファイルから、指定したフィールドのデータだけを取り出して出力 します。
ファイルの指定が無いとき、あるいはファイル名が "-" の時は標準入力を取り込みます。

【例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"の"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
$ 

部分文字列指定は画面表示幅の半角文字分を1としています。

$ echo アイウエオカキクケコ | self 1.3.4
ウエオカ
$ 

開始文字に負数を指定すると、末尾からの位置を指定することが出来ます。

$ cat ken
埼玉県
神奈川県
千葉県
$ self 1.-2 ken
県
県
県
$ 

【例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
$ 

【注意】

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

【注意】

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

【注意】

部分文字列指定で文字の途中で開始したり、文字の途中となる長さを指定したときは
エラーとなります。

$ echo USP 研究所 | self 1.2.4
Error(792)[self] : Rec.1 error.
$

フィールドの幅より大きい開始位置やフィールドの先頭より前を
指定してもエラーとなります。

$ echo USP 研究所 | self 1.20 2
Error(788)[self] : Rec.1 error.
      

$ echo USP 研究所 | self 1.-20 2 Error(770)[self] : Rec.1 error. $

ただし、-n[string] オプションを指定すると、エラーにならず
そのフィールドが[string]になります。

$ echo USP 研究所 | self -n_ 1.20 2 2
_ 研究所
$

120160726 開始文字位置の負数指定を追記 青木

【関連項目】

delf(1)

last modified: 2016-07-27 23:07:27