ホテルを選ぶとき、これだけは譲れない条件TOP3は?

cshスクリプト内での”ヒアドキュメント”とパイプライン

cshスクリプト内で、
1)比較的大量の入力を必要とするコマンドcommand1
2)command1の出力をawkにかけて整形する

ことをしたいのです。ここで、条件として、一時ファイルを作らないという制約があります。

ここで、ヒアドキュメントというのでしょうか?
command1 <<EOF
very very long text
very very long text
very very long text
very very long text
EOF

を用い、command1の入力とします。
そして、command1の標準出力をawkにかけたいのです。

そこで

#!/bin/csh

( command1<<EOF
very very long text
very very long text
very very long text
very very long text
EOF)| awk '............'

とかやってみましたが、うまくいきません。

command1 <<EOF | awk '....'
very very long text
very very long text
very very long text
EOF

もだめです。
別に、<<EOFにこだわるつもりはないのですが、cshスクリプト内で、かつ一時ファイルの作成をせずに、
このようなことをやる方法はあるでしょうか? 入出ストリームの切り替えとかでできそうな木もするのですが、できればそれはなしでお願いします。

なんでcshわざわざこんなことをやるんだ、一時ファイル作ればいいじゃん、という意見ごもっともですが、cshの理解のため、あえてやってみたいのです。

よろしくお願いいたします。

A 回答 (1件)

とりあえず素直にやるなら、



(command | awk '/bar/{print}') <<EOF
foo
bar
baz
EOF
    • good
    • 0
この回答へのお礼

ありがとうございました。
あまりきれいではないですが、ここらへんがshプログラミングの限界なのでしょうね。
shやtcshのトークンの分解、""、''、``の置換過程、<>の構文解析など勉強していきたいと思います。

お礼日時:2010/07/14 08:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!