4桁の文字列を、6桁にする。
※nysol を実際に触っている人向けの文章です。
nysol は、基本的なデータ処理機能があって、組み合わせで実現できるようになっています。PHPのように、関数一発でやってくれるわけではないです。そこで、こんなことができるというのを書いていきます。他の言語でももちろんできますが、nysol ではこんな感じできるという事例提示です。
タイプコストでいくと他言語よりはタイプ数がすくなくてすみます。
こんなデータがあります。コード(hs)が、4桁だったり、6桁だったりします。
4桁の場合は、00 をつけて、6桁にしたいのです。下記の例では、
馬 0101を、010100 にします。
データ(temp.1)
hs,hs_name
0101,−_馬
0102,−_家畜のもの
010229,−_水牛
010310,−_その他のもの
処理するスクリプト
#!/bin/sh
mcal i=temp.1 c='length($s{hs})' a=len |
mcal c='if(${len}==4,"00","")' a=zero |
mcal c='cat("",$s{hs},$s{zero})' a=hs6
説明
1.ファイル名 temp.1 を読み込みます。ファイルオープンが、i= の2文字です。
1.hs の項目の文字列長を新規項目 len として追加します。
2.項目長 len が、4 なら、新項目zero を、00 とし、4でないなら、空白として追加します。
3.もとの項目 hs と zero を結合して、新項目 hs6 を追加します
結果
hs,hs_name,len,zero,hs6
0101,−_馬,4,00,010100
0102,−_家畜のもの,4,00,010200
010229,−_水牛,6,,010229
データ処理では、コード変換はしばしば行われます。どんな言語でやってもいいのですが、
タイプコストという点では、nysol は優れていると思いますが、どうでしょうか?
馬の部分が、-_馬 となっているのは、処理おわってから対応予定です。