「self」の版間の差分
Pt4a editor (トーク | 投稿記録) 細 (Batch Update) |
Pt4a editor (トーク | 投稿記録) 細 (Batch Update) |
||
23行目: | 23行目: | ||
<file> の指定が無いとき、或は、ファイル名が “-” の時は標準入力を読み込みます。 | <file> の指定が無いとき、或は、ファイル名が “-” の時は標準入力を読み込みます。 | ||
− | === | + | === 例(その1) === |
テキストデータの第4フィールドと第2フィールドを取り出して出力します。 | テキストデータの第4フィールドと第2フィールドを取り出して出力します。 | ||
40行目: | 40行目: | ||
M 白土______ | M 白土______ | ||
F 崎村______</pre> | F 崎村______</pre> | ||
− | === | + | === 例(その2) === |
self はフィールド中の部分を切り出して出力することができます。awk のsubstr 関数と同様な機能ですが、桁数(画面上の表示幅)で開始位置、長さを指定します。 | self はフィールド中の部分を切り出して出力することができます。awk のsubstr 関数と同様な機能ですが、桁数(画面上の表示幅)で開始位置、長さを指定します。 | ||
80行目: | 80行目: | ||
神奈川 | 神奈川 | ||
千葉</pre> | 千葉</pre> | ||
− | === | + | === 例(その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) === |
連続したフィールドを記述できます。 | 連続したフィールドを記述できます。 | ||
107行目: | 107行目: | ||
白土______ 40 M 58 | 白土______ 40 M 58 | ||
崎村______ 50 F 82</pre> | 崎村______ 50 F 82</pre> | ||
− | === | + | === 例(その5) === |
NF を使用することができます。 | NF を使用することができます。 | ||
117行目: | 117行目: | ||
0000004 71 6 | 0000004 71 6 | ||
0000005 79 80</pre> | 0000005 79 80</pre> | ||
− | === | + | === 例(その6) === |
行頭、行末に空白がある場合 | 行頭、行末に空白がある場合 | ||
129行目: | 129行目: | ||
a b (<- 行頭、行末の空白が削除されている) | a b (<- 行頭、行末の空白が削除されている) | ||
c d e</pre> | c d e</pre> | ||
− | === | + | === 例(その7) === |
ダイレクトモードを使用して、文字列を加工することができます。 | ダイレクトモードを使用して、文字列を加工することができます。 | ||
139行目: | 139行目: | ||
いくつかの注意があります。 | いくつかの注意があります。 | ||
− | === | + | === 注意(その1) === |
入力ファイルが改行文字で終了していない場合、つまり行が尻切れになっている場合は、ファイル末尾に改行文字が追加されて、完結した行になります。 | 入力ファイルが改行文字で終了していない場合、つまり行が尻切れになっている場合は、ファイル末尾に改行文字が追加されて、完結した行になります。 | ||
− | === | + | === 注意(その2) === |
数字名のファイルを使用してはいけません。もし “10” という名前のファイルが存在すると、self 1 10 においてファイル名が “10” であるファイルから第1フィールドを選択するという動作をして、標準入力から第1、10フィールドを削除するという動作をしなくなります。ただし、“2” のように数字1文字だけを指定した場合は、そのファイルが存在しても、それは無視して、フィールドとして扱います。 | 数字名のファイルを使用してはいけません。もし “10” という名前のファイルが存在すると、self 1 10 においてファイル名が “10” であるファイルから第1フィールドを選択するという動作をして、標準入力から第1、10フィールドを削除するという動作をしなくなります。ただし、“2” のように数字1文字だけを指定した場合は、そのファイルが存在しても、それは無視して、フィールドとして扱います。 | ||
− | === | + | === 注意(その3) === |
部分文字列指定で文字の途中で開始したり、文字の途中となる長さを指定したときはエラーとなります。 | 部分文字列指定で文字の途中で開始したり、文字の途中となる長さを指定したときはエラーとなります。 | ||
153行目: | 153行目: | ||
<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) === |
-f オプションを指定すると、エラーとならず、mojicut と同様に直前の文字境界の指定となります。 | -f オプションを指定すると、エラーとならず、mojicut と同様に直前の文字境界の指定となります。 | ||
159行目: | 159行目: | ||
<pre>$ echo USP 研究所 | self -f 1.2.4 | <pre>$ echo USP 研究所 | self -f 1.2.4 | ||
US</pre> | US</pre> | ||
− | === | + | === 注意(その5) === |
フィールドの幅より大きい開始位置やフィールドの先頭より前を指定してもエラーとなります。 | フィールドの幅より大きい開始位置やフィールドの先頭より前を指定してもエラーとなります。 |
2021年3月29日 (月) 16:10時点における版
名前
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