UEC - UNIXを深く理解し、シェルプログラミングを極めるコミュニティサイト

- Tukubaiマニュアル
  - cgi-name(1)
  - check_attr_name(1)
  - check_need_name(1)
  - comma(1)
  - count(1)
  - ctail(1)
  - delf(1)
  - divsen(1)
  - getfirst(1)
  - getlast(1)
  - gyo(1)
  - han(1)
  - join0(1)
  - join1(1)
  - join2(1)
  - juni(1)
  - kasan(1)
  - keta(1)
  - keycut(1)
  - loopj(1)
  - loopx(1)
  - map(1)
  - marume(1)
  - mdate(1)
  - mime-read(1)
  - mojihame(1)
  - nameread(1)
  - plus(1)
  - rank(1)
  - ratio(1)
  - retu(1)
  - self(1)
  - sm2(1)
  - sm4(1)
  - sm5(1)
  - tarr(1)
  - tateyoko(1)
  - tcat(1)
  - unmap(1)
  - up3(1)
  - yarr(1)
  - ycat(1)
  - yobi(1)
  - ysum(1)
  - zen(1)
  - タグ形式(5)
  - ネーム形式(5)
  - フィールド形式(5)

# 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