POSIX shの変数展開による文字列置換の限界を探る - Qiita

シェルスクリプト中で文字列置換をしたくなったら普通はsedやawkを呼び出すのが正解でしょう。ただ、世の中にはプロセスのforkが異常に遅い環境というのがあるので(CygwinとかMSYSとか)、シェルスクリプト内で頑張りたくなること...