「self」の版間の差分

提供: Personal Tukubai for Academic
ナビゲーションに移動 検索に移動
(Batch Update)
 
(Batch Update)
 
(同じ利用者による、間の1版が非表示)
23行目: 23行目:
 
<file> の指定が無いとき、或は、ファイル名が “-” の時は標準入力を読み込みます。
 
<file> の指定が無いとき、或は、ファイル名が “-” の時は標準入力を読み込みます。
  
=== 例その1 ===
+
=== 例(その1) ===
  
テキストデータの第4フィールドと第2フィールドを取り出して出力します。
+
テキストデータの第4フィールドと第2フィールドを取り出して出力します。
  
 
<pre>$ cat data
 
<pre>$ cat data
40行目: 40行目:
 
M 白土______
 
M 白土______
 
F 崎村______</pre>
 
F 崎村______</pre>
=== 例その2 ===
+
=== 例(その2) ===
  
self はフィールド中の部分を切り出して出力することができます。awk のsubstr 関数と同様な機能ですが、桁数(画面上の表示幅)で開始位置、長さを指定します。
+
self はフィールド中の部分を切り出して出力することができます。awk のsubstr 関数と同様な機能ですが、桁数(画面上の表示幅)で開始位置、長さを指定します。
  
第1フィールドの4桁目以降を出力します。
+
第1フィールドの4桁目以降を出力します。
  
 
<pre>$ self 1.4 2 data
 
<pre>$ self 1.4 2 data
52行目: 52行目:
 
0004 白土______
 
0004 白土______
 
0005 崎村______</pre>
 
0005 崎村______</pre>
第2フィールドの1文字目から4桁分(全角2文字分)を出力します。
+
第2フィールドの1文字目から4桁分(全角2文字分)を出力します。
  
 
<pre>$ self 2.1.4 3 data
 
<pre>$ self 2.1.4 3 data
60行目: 60行目:
 
白土 40
 
白土 40
 
崎村 50</pre>
 
崎村 50</pre>
部分文字列指定は画面表示幅の半角文字分を1としています。
+
部分文字列指定は画面表示幅の半角文字分を1としています。
  
<pre>$ echo アイウエオカキクケコ | self 1.3.4
+
<pre>$ echo アイウエオカキクケコ | self 1.3.4
ウエオカ</pre>
+
ウエオカ</pre>
 
開始位置に負数を指定すると、末尾からの位置を指定することが出来ます。
 
開始位置に負数を指定すると、末尾からの位置を指定することが出来ます。
  
80行目: 80行目:
 
神奈川
 
神奈川
 
千葉</pre>
 
千葉</pre>
=== 例その3 ===
+
=== 例(その3) ===
  
 
フィールド 0 はレコード全体の指定になります。
 
フィールド 0 はレコード全体の指定になります。
97行目: 97行目:
 
M 0000004 白土______ 40 M 58 71 20 10 6
 
M 0000004 白土______ 40 M 58 71 20 10 6
 
F 0000005 崎村______ 50 F 82 79 16 21 80</pre>
 
F 0000005 崎村______ 50 F 82 79 16 21 80</pre>
=== 例その4 ===
+
=== 例(その4) ===
  
 
連続したフィールドを記述できます。
 
連続したフィールドを記述できます。
107行目: 107行目:
 
白土______ 40 M 58
 
白土______ 40 M 58
 
崎村______ 50 F 82</pre>
 
崎村______ 50 F 82</pre>
=== 例その5 ===
+
=== 例(その5) ===
  
 
NF を使用することができます。
 
NF を使用することができます。
117行目: 117行目:
 
0000004 71 6
 
0000004 71 6
 
0000005 79 80</pre>
 
0000005 79 80</pre>
=== 例その6 ===
+
=== 例(その6) ===
  
 
行頭、行末に空白がある場合
 
行頭、行末に空白がある場合
129行目: 129行目:
 
a b          (&lt;- 行頭、行末の空白が削除されている)
 
a b          (&lt;- 行頭、行末の空白が削除されている)
 
c d e</pre>
 
c d e</pre>
=== 例その7 ===
+
=== 例(その7) ===
  
 
ダイレクトモードを使用して、文字列を加工することができます。
 
ダイレクトモードを使用して、文字列を加工することができます。
139行目: 139行目:
 
いくつかの注意があります。
 
いくつかの注意があります。
  
=== 注意その1 ===
+
=== 注意(その1) ===
  
 
入力ファイルが改行文字で終了していない場合、つまり行が尻切れになっている場合は、ファイル末尾に改行文字が追加されて、完結した行になります。
 
入力ファイルが改行文字で終了していない場合、つまり行が尻切れになっている場合は、ファイル末尾に改行文字が追加されて、完結した行になります。
  
=== 注意その2 ===
+
=== 注意(その2) ===
  
数字名のファイルを使用してはいけません。もし “10” という名前のファイルが存在すると、self 1 10 においてファイル名が “10” であるファイルから第1フィールドを選択するという動作をして、標準入力から第1、10フィールドを削除するという動作をしなくなります。ただし、“2” のように数字1文字だけを指定した場合は、そのファイルが存在しても、それは無視して、フィールドとして扱います。
+
数字名のファイルを使用してはいけません。もし “10” という名前のファイルが存在すると、self 1 10 においてファイル名が “10” であるファイルから第1フィールドを選択するという動作をして、標準入力から第1、10フィールドを削除するという動作をしなくなります。ただし、“2” のように数字1文字だけを指定した場合は、そのファイルが存在しても、それは無視して、フィールドとして扱います。
  
=== 注意その3 ===
+
=== 注意(その3) ===
  
 
部分文字列指定で文字の途中で開始したり、文字の途中となる長さを指定したときはエラーとなります。
 
部分文字列指定で文字の途中で開始したり、文字の途中となる長さを指定したときはエラーとなります。
  
<pre>$ echo USP 研究所 | self 1.2.4
+
<pre>$ echo USP 研究所 | self 1.2.4
 
Error(792)[self] : Rec.1 error.</pre>
 
Error(792)[self] : Rec.1 error.</pre>
=== 注意その4 ===
+
=== 注意(その4) ===
  
 
-f オプションを指定すると、エラーとならず、mojicut と同様に直前の文字境界の指定となります。
 
-f オプションを指定すると、エラーとならず、mojicut と同様に直前の文字境界の指定となります。
  
<pre>$ echo USP 研究所 | self -f 1.2.4
+
<pre>$ echo USP 研究所 | self -f 1.2.4
US</pre>
+
US</pre>
=== 注意その5 ===
+
=== 注意(その5) ===
  
 
フィールドの幅より大きい開始位置やフィールドの先頭より前を指定してもエラーとなります。
 
フィールドの幅より大きい開始位置やフィールドの先頭より前を指定してもエラーとなります。
  
<pre>$ echo USP 研究所 | self 1.20 2
+
<pre>$ echo USP 研究所 | self 1.20 2
 
Error(788)[self] : Rec.1 error.
 
Error(788)[self] : Rec.1 error.
$ echo USP 研究所 | self 1.-20 2
+
$ echo USP 研究所 | self 1.-20 2
 
Error(770)[self] : Rec.1 error.</pre>
 
Error(770)[self] : Rec.1 error.</pre>
 
ただし、-n&lt;string&gt; オプションを指定すると、エラーにならず、そのフィールドが &lt;string&gt; になります。
 
ただし、-n&lt;string&gt; オプションを指定すると、エラーにならず、そのフィールドが &lt;string&gt; になります。
  
<pre>$ echo USP 研究所 | self -n_ 1.20 2
+
<pre>$ echo USP 研究所 | self -n_ 1.20 2
 
_ 研究所</pre>
 
_ 研究所</pre>
 
== Version and Edition ==
 
== Version and Edition ==
181行目: 181行目:
  
 
© 2021 Universal Shell Programming Laboratory [https://www.usp-lab.com/ site]
 
© 2021 Universal Shell Programming Laboratory [https://www.usp-lab.com/ site]
 
  
  
 
[[Category:man]]
 
[[Category:man]]

2021年6月7日 (月) 08:37時点における最新版

名前

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

self = select fields

書式

使い方とオプション

Usage

self f1 f2 ... <file>
self -d f1 f2 ... <string>

Option

-n<string>
-f

説明

<file> ファイルから、指定したフィールドのデータだけを取り出して出力します。

<file> の指定が無いとき、或は、ファイル名が “-” の時は標準入力を読み込みます。

例(その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
県
県
県

長さに負数を指定すると、フィールド桁数から引いた長さを指定することが出来ます。

$ self 1.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)

行頭、行末に空白がある場合

% cat data2
    a    b   (<- 行頭、行末に空白がある)
c   d e2


$ self 1/NF data2
a b          (<- 行頭、行末の空白が削除されている)
c d e

例(その7)

ダイレクトモードを使用して、文字列を加工することができます。

$ self -d 1.1.4 "20070401 12345"
2007

注意

いくつかの注意があります。

注意(その1)

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

注意(その2)

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

注意(その3)

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

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

注意(その4)

-f オプションを指定すると、エラーとならず、mojicut と同様に直前の文字境界の指定となります。

$ echo USP 研究所 | self -f 1.2.4
US

注意(その5)

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

$ 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
_ 研究所

Version and Edition

Version : Tue Jun 18 19:00:37 JST 2019

Edition : 3


© 2021 Universal Shell Programming Laboratory site