簡単なテキストの表組みツール(txtbl)のためのさらなるツール
$ tar xzf txtblcnt-<yymmdd>.tgz $ cd txtblcnt-<yymmdd> $ make
txtblコマンドが使える状態になってる前提です
Linuxな環境
$ tac tbl.txt | ./tblcnt | tac | txtbl
BSDな環境
$ tail -r tbl.txt | ./tblcnt | tail -r | txtbl
行を逆順に表示するコマンドを2回使います。
Linuxな環境では tac コマンド (catの逆)
BSDな環境では tail コマンドの-rオプション指定を使います
次のように表示されます
+----+----+-----+ |foo1|bar1|hoge1| | | +-----+ | | |hoge2| | +----+-----+ | |bar2|hoge3| | | +-----+ | | |hoge4| | | +-----+ | | |hoge5| +----+----+-----+ |foo2|bar3 | +----+----+-----+ |foo3|bar4|hoge6| +----+----+-----+ |foo4 |hoge7| +---------+-----+ $
tbl.txt の内容
foo1 bar1 hoge1 hoge2 bar2 hoge3 hoge4 hoge5 foo2 bar3 foo3 bar4 hoge6 foo4 hoge7
行頭に連続するスペースまたはタブの数が、表の列方向の位置(カラム位置)に対応します。
列方向の位置が減少するときは、行方向の位置を増やして更新します
$ cd txtblcnt-<yymmdd> $ sudo cp tblcnt /usr/local/bin/
txtblcnt スクリプトを用意してみました
#!/bin/sh TAC=tac #TAC="tail -r" ${TAC} | tblcnt | ${TAC} | txtbl # EOF
Linux用になっています。BSDの場合は冒頭のTAC指定を"tail -r"にします
$ sudo cp txtblcnt /usr/local/bin/
txtblのときの例にならって
$ txtblcnt < foo2.txt +------+----------------------------------------------------------------------+ |関数名|int foo_send(const unsigned char *buf, unsigned bytes) | +------+----------------------------------------------------------------------+ |説明 |データ送信開始 | +------+----------------------------------------------------------------------+ |引数 | +------+--------+---------------------+---------------------------------------+ |項番 |仮引数名| 型 | 説明 | +------+--------+---------------------+---------------------------------------+ |1 |buf |const unsigned char *|送信するデータの先頭アドレス | +------+--------+---------------------+---------------------------------------+ |2 |bytes |unsigned |送信するデータのバイト数(最大4096*9=36K| | | | |バイトまで指定可能) | +------+--------+---------------------+---------------------------------------+ |返却値 | +------+----+-----------------------------------------------------------------+ |項番 | 型 | 説明 | +------+----+---+---------------------+---------------------------------------+ |1 |int |0 |FOO_OK |正常終了 | | | +---+---------------------+---------------------------------------+ | | |<0 |FOO_EINVAL |パラメータの値が異常である | | | | +---------------------+---------------------------------------+ | | | |FOO_EBUSY |現在送信中である | | | | +---------------------+---------------------------------------+ | | | |FOO_EIO |エラーが検出された | | | | +---------------------+---------------------------------------+ | | | |FOO_ETIMEDOUT |タイムアウト発生 | +------+----+---+---------------------+---------------------------------------+ | 前提 | | FOOドライバが初期化されていること。すでに送信中でないこと。 | | 結果 | | 指定した長さのデータが、送信開始される。送信の完了はドライバ状態の通知を | | 利用すること。 | | 概略説明 | | 指定されたデータを、DMA送信バッファにコピーして、送信を開始する。 | +-----------------------------------------------------------------------------+ $ $ cat foo2.txt 関数名 int foo_send(const unsigned char *buf, unsigned bytes) 説明 データ送信開始 引数 項番 仮引数名 型 \c 説明 \c 1 buf const unsigned char * 送信するデータの先頭アドレス 2 bytes unsigned 送信するデータのバイト数(最大4096*9=36K\nバイトまで指定可能) 返却値 項番 型 \c 説明 \c 1 int 0 FOO_OK 正常終了 <0 FOO_EINVAL パラメータの値が異常である FOO_EBUSY 現在送信中である FOO_EIO エラーが検出された FOO_ETIMEDOUT タイムアウト発生 \~ 前提\n FOOドライバが初期化されていること。すでに送信中でないこと。\n 結果\n 指定した長さのデータが、送信開始される。送信の完了はドライバ状態の通知を\n 利用すること。\n 概略説明\n 指定されたデータを、DMA送信バッファにコピーして、送信を開始する。 $