ふと、sedで文字列を1文字ずつ入れ替えた一覧(「ちんすこう」が「ちんこすう」になってるなど)を作りたいと思ったので、やってみることにした。 まぁ、そんなに難しいことはなく、以下のようにコマンドを実行すればできる。

echo あいうえお | (a=$(cat);seq 0 $((${#a}-1))|xargs -n1 -I@ bash -c "echo $a|sed -r 's/(.{@})(.)(.)/\1\3\2/'")
blacknon@BS-PUB-UBUNTU-01:~$ echo あいうえお | (a=$(cat);seq 0 $((${#a}-1))|xargs -n1 -I@ bash -c "echo $a|sed -r 's/(.{@})(.)(.)/\1\3\2/'")
いあうえお
あういえお
あいえうお
あいうおえ
あいうえお

地味にちょっと引っかかりやすいのが、sedでの正規表現のあたりだろうか。 (.)(.) だけで正規表現をかけると2文字ずつ認識されてしまうので、xargsで1文字ずつずらして処理するようにしている。 多分、sedのラベルを使えばもっとシンプルに書ける気がするけど、ひとまずこれで動くからよしとするか(´・ω・`)。