お仕事で大変つらいスクリプトを見たので、備忘まで。
物自体はほぼ以下のページみたいな感じ。 逆引きシェルスクリプト/シェルスクリプトで文字列操作のleft, rightを作ってみた - Linuxと過ごす
わざわざ文字列を切り出すためだけのために数十行以上の関数を書くか、という話はともかく、この方法では性能がでない。
exprみたいなたいして性能もでないコマンドを使っているうえに、そもそもこのコードだとforkで子プロセスが生成される。一度や二度ならさほどでもないけれど、繰り返し実行すると馬鹿にならない時間がかかる。つらい。
bashならせめてパラメータ展開を使ってほしかった。 シェル変数展開のまとめ | OpenGroove
bashの機能なので子プロセスは生成されず早い。 手元で検証したら、1万回ループさせて、前者が20min、後者が1sぐらいで済んだので性能は段違いである。