しらいです。

In article <bvdn39$g0l$1@newsserv.ics.es.osaka-u.ac.jp>,
SAITOH akinori  <saitoh@ist.osaka-u.ac.jp> wrote:
>大阪大学の齊藤です
>
>kuno@gssm.otsuka.tsukuba.ac.jp wrote:
>> 久野です。

 先生方にも筆の誤り?


>>   mkdir tmp
>>   for i in *.F
>>   do
>>     sed 's/include \'\(.*\)\'/#include "\1"/' $i >tmp/$i
>>   done

 普通の shell だと「'」を含むような文字列は "" で quote し
た方が記述し易いと思います。
        sed "s/include '\(.*\)'/#include \"\1\"/" $i >tmp/$i

 久野センセのお使いの shell が何か存じませんが、私の確認出
来る範囲には、'' の中の「'」を「\」で escape 出来るような仕
様の shell は見つかりません。
 for の文法は Bourne shell のようですが、この script をその
まま試してみると、sh/ash/ksh/bash/zsh 全て継続行の入力を促さ
れます。

# 普通の shell 文法では '' の中の meta character は「'」自
#身のみなので、一個目の「\'」で quote が完了し、続く「\'」
#は escape されて文字「'」となり、最後の「'」で quote が始
#まります。
# Bourne shell 系だと quote された文字列を複数行に渡って記
#述出来るので、$PS2 を表示して入力待ちになりますが、csh 系
#では複数行を記述出来ないので、csh/tcsh では「' が一致しな
#い」旨の message を吐きますね。


>\( なんて難しい大技ですね。もっとシンプルに、
>     sed '/^include /s/^/#/' $i >tmp/$i

 それだと「'」→「"」の変換が出来ませんから、s function を
もう一つ書かなくては。
        sed "/^include /s/^/#/;s/'/\"/g" $i >tmp/$i
or
        sed -e "/^include /{" -e "s/^/#/" -e "s/'/\"/g" -e "}" $i >tmp/$i

 sed の実装により文法が微妙に異なるので、このうちどちらが有
効かは環境依存ですが、場合によってはどちらも通らないかも知れ
ません。
 その場合 1liner では書けなくなりますが、こんな感じで書けば
どの sed でも通ると思います。
        sed "/^include /{
        s/^/#/
        s/'/\"/g
        }" $i >tmp/$i

-- 
                                               しらい たかし