1bai <概要> 1bai : 前0を取り除く <書式> Usage : 1bai [-r] f1 f2 .. file 1bai -d[r] string Version : Wed Mar 14 22:39:33 JST 2018 Edition : 1 <説明> 指定したファイルの指定フィールドや指定した文字列の先頭の0を取り除き ます。(小数点以下の後0も削除します) <例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 <コラム> 命名の由来 対象の数字の文字列に1倍を掛けることにより0を取り除くため、1bai と 命名されています。