Open usp Tukubai を使って作業開発効率を上げる
シェルスクリプトで処理を書いていると、あ~こんなコマンドがあればいいのに!とか、もうちょっとシンプルに処理を書けないかな~という場面が多々あります。そのような場面でこそ Open usp Tukubai というコマンド群をインストールすると、かゆいところに手が届くコマンドをたくさん手に入れることができます。
Open usp Tukubai とは?
Open usp Tukubai とは、ユニバーサル・シェル・プログラミング研究所様が開発している usp Tukubai という商用のソフトウェアのオープンソース版のソフトウェアです。usp Tukubai についてウェブサイトでは次のように説明されています。
usp Tukubaiはターミナルから操作するインタラクティブなデータ処理作業から、シェルスクリプトによる業務システムの構築・業務用Webアプリケーションの構築まで、UNIXの基本機能を最大限に活用するプログラミング能力を提供している。
[Open usp Tukubaiについて] エンタープライズ向けコマンド群usp Tukubaiのオープンソースソフトウェア版。ユニケージ開発手法の普及促進を狙い、usp Tukubaiから特に利用頻度の高いものを選定して提供している。usp Tukubaiと異なりPythonを使って再実装されており、特に利用頻度の高いusp Tukubaiのコマンドを手軽に試すことができるようになっている。また 3分でわかるusp Tukubai には、以下のような用途が記載されており、非常に高機能なソフトウェアです。
シェルスクリプトの機能を主にデータベース用途向けに補完するためのコマンド群がusp Tukubaiだ。普通ならデータベースの利用を検討するシーン。usp Tukubaiであればシェルスクリプトとテキストファイルでデータベースと同等以上のことをやってのける。
実用性に疑問を感じる人もいるだろう。ところが、あなたがよく買い物に行く大手スーパーやコンビニの商品管理もusp Tukubaiで行われている。usp Tukubaiは本気で開発されたプロダクトだ。
Open usp Tukubai で提供されているコマンド一覧
Open usp Tukubaiコマンドマニュアル に 2017/11/11 時点で次の提供コマンド一覧が記載されています。これらの処理は Linux コマンドを駆使しても、簡単に出来る処理ではありませんので、間違いなく役に立ちます。- 日付と時刻を秒数に変換
- CGI POSTメソッドで受け渡されるデータをネーム形式に変換
- ネーム形式のデータ種類を行ごとに判定
- ネーム形式の整合性判定
- マスタファイルにキーフィールドが一致するトランザクションファイルの行を抽出(未整列可)
- トランザクションファイルにマスタファイルを連結(一致行のみ、未整列可)
- トランザクションファイルにマスタファイルを連結(不一致はダミーへ置換、未整列可)
- 指定したフィールドに3桁または4桁のカンマを追加
- 同じキーの行数をカウント
- ファイルの末尾n行を削って出力
- 日付と時刻のフォーマット変換
- 指定したフィールドを除いて出力
- 指定フィールドを1,000で除算
- テンプレートにファイルをはめ込み
- HTML テンプレートに文字をはめ込む
- 同一キーの最初の行を出力
- 同一キーの最後の行を出力
- 行をカウント
- 半角へ変換
- マスタファイルにキーフィールドが一致するトランザクションファイルの行を抽出
- トランザクションファイルにマスタファイルを連結(一致行のみ)
- トランザクションファイルにマスタファイルを連結(不一致はダミーへ置換)
- 同一キー内での順位を出力
- 累計
- テキストデータの桁そろえ
- キーでファイルを分割
- フィールドの高精度演算(整数18桁+小数18桁)
- 指定したフィールドのデータのラインナップを抽出
- 複数のテキストファイル全行を連結
- 総掛けで連結
- 前にゼロをつける
- 縦型ファイルを縦キー/横キー形式の表に変換
- 四捨五入、切り上げ、切り捨て
- 日付、週、月の処理
- MIME形式のファイル読み込み
- テンプレートに文字をはめ込み
- ネーム形式データの読み込み
- 引数の足し算
- 行に階数を追加
- 構成比算出
- 列をカウント
- 指定したフィールドのデータ取り出し
- 指数(構成比)を計算
- キー単位での値の集計
- 小計、中計
- 大計
- キーでファイル分割(キーに関して整列不要)
- 横型のデータを縦型に展開
- 縦テキストを横テキストへ変換
- ファイルを縦へ並べ替え
- 縦キー/横キー形式の表データを縦型データに変換
- 2つのファイルを同一キーフィールドでマージ
- 縦型のデータを横型に展開
- ファイルの横連結
- 曜日算出
- 横集計
- 全角へ変換
Open usp Tukubai をインストールする
Open usp Tukubaiダウンロード にアクセスします。すると次のようなページが表示されますので、最新版である open-usp-tukubai-2014061402.tar.bz2 をクリックし、ダウンロードを開始します。ファイルがダウンロードされたら、Linux サーバーに転送し以下のようにファイルを解凍します。すると open-usp-tukubai-2014061402 というディレクトリにファイルが展開されます。
$ bunzip2 open-usp-tukubai-2014061402.tar.bz2 $ tar xf open-usp-tukubai-2014061402.tar
$ cd open-usp-tukubai-2014061402 $ sudo make install
Open usp Tukubai のコマンドを使ってみる
せっかくインストールしたので実際にコマンドを1つ試してみます。keta というテキストファイルの桁そろえをしてくれるコマンドを使ってみましょう。サイトに掲載されているサンプルデータで実際にコマンドが意図したとおりに動作するのか検証します。
テストで使用するデータは次の通りです。このデータは各列の桁が揃っていませんので、これをキレイにそろえてみます。
$ cat sample.txt 01 埼玉県 01 さいたま市 91 59 20 76 54 01 埼玉県 02 川越市 46 39 8 5 21 01 埼玉県 03 熊谷市 82 0 23 84 10 02 東京都 04 新宿区 30 50 71 36 30 02 東京都 06 港区 58 71 20 10 6 04 神奈川県 13 横浜市 92 56 83 96 75
keta というコマンドにファイル名を指定して実行すると、次のように自動的に右寄せで桁をそろえてくれます。
$ keta sample.txt 01 埼玉県 01 さいたま市 91 59 20 76 54 01 埼玉県 02 川越市 46 39 8 5 21 01 埼玉県 03 熊谷市 82 0 23 84 10 02 東京都 04 新宿区 30 50 71 36 30 02 東京都 06 港区 58 71 20 10 6 04 神奈川県 13 横浜市 92 56 83 96 75
左寄せで桁をそろえたい場合には、 "--" というオプションを付けると左寄せになります。
$ keta -- sample.txt 01 埼玉県 01 さいたま市 91 59 20 76 54 01 埼玉県 02 川越市 46 39 8 5 21 01 埼玉県 03 熊谷市 82 0 23 84 10 02 東京都 04 新宿区 30 50 71 36 30 02 東京都 06 港区 58 71 20 10 6 04 神奈川県 13 横浜市 92 56 83 96 75