usp-engineers-community/Open-usp-Tukubai — pull request #2 by 321516 (2012-09-06 16:13:49+00:00)
Title: SH版self追加などしました

こんばんは。

先日はpullしていただきありがとうございました。
また調子に乗ってコマンドのshクローンを作りました。

(1)selfコマンドクローン
これ結構自信作ですよ。なんだかんだでファイルサイズが一番大きくなりましたから。
フィールド抽出はAWKに任せていますが、そのAWKになるべく負担を掛けないようにして速さにこだわってます。
例えば1.2.3といったオプションはsubstrを使うのでそのぶん重くなりますが、
単純な1、2といったものでは使わなくて済みます。だから、必要無いものはsubstrを使わないで済むよう
シェルスクリプト側で軽いAWKコードを作っています。
ファイルサイズが大きくなった理由はたぶん引数のパースですね。
あと、本家では対応していない Broken pipe時の動作にも対応しています。
(self 1 VERY_HUGE_FILE | head -1 などとやった場合の動作ですね)

(2)gyoコマンドクローンの仕様間違い修正＆高速化
本家gyoコマンドだと最終行が改行で終わってなくてもカウントするのに対し、
wc -lやそれを利用している本クローンはカウントしていませんでした。
なのでこれを本家に準拠させています。
また、実ファイルがある場合はcat FILE | wc -lとやるよりwc -l FILEの方が圧倒的に速いことに気付いたので
実ファイルだとわかった場合にはそのようにすることで相当高速化しました。

(3)半角カナの文字幅を正確に検出するように修正
selfはもちろん、ketaやycatで必要になるUTF-8キャラクターのバイト長に対する文字幅検出が、
半角カナのことを考慮していないことに気付いたため、ちゃんと認識するように修正しました。

(4)その他バグフィックス＆ヘルプメッセージの修正

仕事さぼって書きました。病みつきです。
よろしければまたpullしてください。

321516