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
オプションをつけると引数で指定した文字列に対する処理をします。
-r
オプションをつけると -1 倍します。-d
オプションをつけると引数で指定した文字列に対する処理をします。- <file>として
-
を指定するかまたは省略すると標準入力を使用します。 - フィールド指定
<f1> <f2> ...
を省略すると全フィールド指定となります。 - フィールド指定
<f1> <f2> ...
にひとつでも0があると全フィールド指定となります。 - コマンド入力が
1bai -r
であったときは標準入力に対して全フィールドを -1 倍します。 - コマンド入力が
1bai
であったときはコマンドの構文を表示して終了します。
【例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】
up3
とsm2
を組み合わせて同じキーをもつレコードの引き算を行います。
$ 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
と命名されています。