getno
名前
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