本を読む

読書やコンピュータなどに関するメモ

どう書く?org:文字列の反転(括弧の対応を保存)

 sedで。文字列にコントロールコードが入っていないこと前提。

#!/bin/sed -f
:paren
s/(\([^][(){}]*\))/\x01\1\x02/g;
t paren
s/{\([^][(){}]*\)}/\x03\1\x04/g;
t paren
s/\[\([^][(){}]*\)\]/\x05\1\x06/g;
t paren

s/\x01/)/g;
s/\x02/(/g;
s/\x03/}/g;
s/\x04/{/g;
s/\x05/]/g;
s/\x06/[/g;

s/$/\n/
:reverse
s/^\(.\)\(.*\n\)\(.*\)$/\2\1\3/
t reverse
s/\n//

 実行例。

$ cat sample.txt 
文字列(もじれつ)の反転(はんてん)
対応[の{とれている(さまざまな)括弧}の(例)]です。
これ(は(対応のとれていない)括弧がある例です。
これ(も{対応の)とれていない}括弧の例です
$ sed -f reverseString2.sed < sample.txt 
(んてんは)転反の(つれじも)列字文
。すで[(例)の{弧括(なまざまさ)るいてれと}の]応対
。すで例るあが弧括(いないてれとの応対)は(れこ
すで例の弧括}いないてれと)の応対{も(れこ

追記2008-08-19:
いまさらながら、どう書く?.orgに投稿しました

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/308-4b8bdb0e

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad