段落単位で選択する grep(1) って無いのかな
(1つ以上の連続した)空行で区切られた「段落」の中に検索語があったら段落全体を出力するような grep(1)
がほしい.これも昔 若かりし頃は
sed(1)
のレジスタを使って,元の改行文字を(決して衝突しないマーカー)__FLA_XYZZY_NEW_LINE__
に変換しつつ全てを1行にくっつけ,__FLA_XYZZY_NEW_LINE__(__FLA_XYZZY_NEW_LINE__)+
で再び行分割し(これで段落単位で連結されたことになる)grep(1)
し__FLA_XYZZY_NEW_LINE__
で再び行分割(これで元の文章に戻る)
とかやってた.まぁ sed(1)
よりもうちょっと賢いスクリプト言語(配列使えるような)があれば,もう少し幸せになってたはずだが... 私においてもone liner厨二病というのは避けがたいものだったってこと.
普通の意味での (Unix shell) パイプラインで詰まったときは while read line; do ...; done
とか ( subshell-cmd; )
に逃げるのは常套手段だが,しかしそれは(2011年現在の価値基準では)もはや純粋なUnix shell-script programmingを放棄すべき地平線に来てることを意味する.