getno

提供: Personal Tukubai for Academic
2021年8月19日 (木) 19:00時点におけるPt4a editor (トーク | 投稿記録)による版 (Batch Update)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

名前

getno : シーケンシャルな番号を取得する

書式

使い方とオプション

Usage

getno <num> <file>

Option

-r           repeat
-i<init>     initial value at repeat
-u           unlimited digits
-m<max>      maximum value
-n<range>    value range

説明

<num> で指定した数の連続した番号を、<file> に書かれている次の番号から出力します。出力最終番号が <file> に上書きされます。

<file> の読み出しから上書きまでが排他制御されます。

番号は、<file> に書かれている値の桁数の固定長(前0)で出力されます。桁数の制限は有りません。最大値(ALL 9)を超える出力をしようとした時はエラーになります。

-u オプションを指定した場合は可変長(前0無し)で出力されます。桁数の制限は無く、最大値の制限も有りません。-r オプションは併用できません。また <file> の値の前0は意味を持ちません。

-m オプションを指定すると、最大値が <max> になります。<max> の前0は無視されます。-u オプションの有無にかかわらず、<max> を超える出力をしようとした時はエラーになります。-u オプションを指定していない場合、<max> の桁数が <file> の値の桁数より大きいとエラーになります。

-r オプションを指定した場合は、最大値まで出力した後、値が初期値(ALL 0)に戻り継続して出力されます。-i オプションで初期値を <init> に変更できます。<init> の前0は無視されます。<init> の値が最大値を超えている場合はエラーとなります。

-n オプションでは値の範囲を指定できます。範囲は加減と上限を “-” で連結して示します。複数の範囲を “,” で連結して指定できます。-m オプションは併用できません。

例(その1)

fileより3桁の連番を3つ出力

$ cat file
000
$ getno 3 file
001
002
003
$ cat file
003            <- 実行後、file の中身は最後に出力した番号になります。

(注)桁数の最終値を超える指定はエラーとなります。

$ cat file
997
$ getno 5 file
Error(559)[getno.NEW] : exceeds the maximum value    <- エラー
$ echo $?
1
$ cat file
997        <- 3桁なので最大値は 999、出力数指定は5つなので 999 を
            超える指定がされている。

例(その2) -u オプション(桁数制限なし)

$ cat file
097
$ getno -u 5 file
98         <- file の前0は無視されます。
99
100        <- 桁数は自動的に増えます。
101
102
$ cat file
102

例(その3) -m オプション(最大値指定)

$ cat file
05
$ getno -m8 5 file
Error(559)[getno.NEW] : exceeds the maximum value
$ cat file
05
$ getno -u -m8 5 file
Error(497)[getno.NEW] : exceeds the maximum value
$ cat file
05

例(その4) -r オプション(繰り返し指定)

file より2桁の連番を4つ出力

$ cat file
97
$ getno -r 4 file
98
99
00      <- 99の次は 00 より継続して連番出力
01
$ cat file
01

最大値を指定した場合

$ cat file
30
$ getno -r -m32 4 file
31
32
00
01
$ cat file
01

初期値を指定した場合

$ cat file
97
$ getno -r -i2 4 file
98
99
02      <- 99 の次は指定した値 02 より継続して連番出力
03
$ cat file
03

例(その5) -n オプション(範囲指定)

$ cat file
017
$ getno -n10-19,100-109 4 file
018     <- 10-19 による出力
019
100     <- 100-109 による出力
101
$ cat file
101

-r オプションを併用した場合

$ cat file
107
$ getno -r -n10-19,100-109 4 file
108     <- 100-109 による出力
109
010     <- 10-19 による出力
011

注意

このコマンドは、/home/TOOL 下に配置されていないと動作しません。

取得する番号の桁数に制限は有りませんが、個数は 2,147,483,647 個以下に制限されています。

備考

NFS でリモートマウントされたディスク上にファイル <file> がある場合、

$ ssh "NFS サーバ" "getno 1 <file>"

のように ssh により NFS サーバー上で getno を起動する必要があります。

Version and Edition

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

Edition : 1


© 2021 Universal Shell Programming Laboratory site