Tukubaiオンラインコマンドマニュアル - 1bai(1)

1bai(1)

【名前】

1bai : 前0をとる

【書式】

Usage   : 1bai [-r] f1 f2 .. [file]
          1bai -d[r] string
          1bai -[r]d string
Version : Sat Aug 20 22:29:15 JST 2022
Edition : 1

【説明】

指定したファイルの指定フィールドや指定した文字列の先頭の0を取り除きます。(小数点以下の後0も削除します)-rオプションをつけると-1倍します。-dオプションをつけると引数で指定した文字列に対する処理をします。

【例1】

$ 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 崎村______ 20 M 82 79 16 21 80
0000007 梶川______ 42 F 50 2  33 15 62
$ 1bai 1 data > data2
$ cat data2   <- 1フィールド目の頭 "0" を取り去ります。
0 浜地______ 50 F 91 59 20 76 54
1 鈴田______ 50 F 46 39 8 5 21
3 杉山______ 26 F 30 50 71 36 30
4 白土______ 40 M 58 71 20 10 6
5 崎村______ 20 M 82 79 16 21 80
7 梶川______ 42 F 50 2 33 15 62

【例2】

-r(reverse) オプションをつけると-1倍します。

$ cat file
a 1 2 3 4 5
b 1 2 3 4 5
$ 1bai -r 2 file
a -1 2 3 4 5
b -1 2 3 4 5
$ 1bai -r 2/4 file
a -1 -2 -3 4 5
b -1 -2 -3 4 5
$ 1bai -r 2 NF-1/NF file
a -1 2 3 -4 -5
b -1 2 3 -4 -5

【例3】

up3sm2を組み合わせて同じキーをもつレコードの引き算を行います。

$ cat data
a 5
b 2
$ cat data2
a 2
b 1
$ 1bai -r 2 data2 | up3 key=1 data | sm2 1 1 2 2
a 3
b 1

【例4】

-dオプションはダイレクトモードです。引数に直接編集したい文字列を指定します。

$ 1bai -d 0123
123
$ 1bai -d 0123.400
123.4
$ 1bai -d 0123.000
123
$ 1bai -d 0
0
$ 1bai -d -000123.400
-123.4
$ 1bai -d +000123.400
123.4
$ 1bai -dr 0123
-123

【例5】

前0をとることにより、シェルや awk の printf 文における8進数への自動置換を無効にします。

$ num=010   <- 8進数と解釈されてしまう
$ printf '%04d\n' $num
0008
$ printf '%04d\n' $(1bai -d $num)
0010

【例6】

固定長テキストから変換されたデータは、符号や前0後0がついたものが多く、1baiコマンドが役立ちます。

$ cat file
a 000123.000 000345.000
b 000098.450 000100.000
$ 1bai 2 3 file
a 123 345
b 98.45 100

【注意】

実行時パラメータの最後尾が実際に存在するファイルの名前であればそれを入力ファイルとして開く。このファイル名は「10」のような数字列であってもかまわない。最後尾が存在するファイル名でないときはそれをフィールドとして処理し、入力ファイル名は省略されたものとして標準入力(stdin)を使用する。

【コラム】

命名の由来対象の数字の文字列に1倍を掛けることにより0を取り除くため、1baiと命名されています。

Last modified: 2022-08-24 10:22:04