作者: davi
日時: 2010/3/19(03:10)
みなさん  <  こん??は でび です

表題の通りなのですが、
「WindowsでCMD窓使っている限りはダメ。以上。」
がFAでしょうか?

var << EOF

でなくても、改行を含む外部ファイル全体を丸ごと
ファイル名決め打ちで(ARGVはできれば使いたくない
です。)変数にインクルードするのでも構いません。

以下のスクリプトで

★\n\

としているのは、実は

★\n

だけが意図なのですが、それだとvar=""の""部分が
ぶった切れになってしまうせいか、変数の範囲を
確定してくれないらしいためです。

BEGIN{
#    FS="\n"
#    OFS="\n"
#    RS=""
#    ORS=""

var="\n\
★\n\
★\n\
★\n\
★\n\
★\n\
★\n\
" #←ここは変更しちゃダメ!

# RSやORSをいじっても変数定義でエスケープなしの改行はダメみたい。
# var << EOF
# ★
# ★
# EOF
}

{
    if($0~/た。/){
        printf("%sような気がするナリよ。\n" var , $0);
        }
        else if($0~/る。/){
        printf("%sかもしれなぁ〜い。\n", $0);
    }
}

-----------------------------------------
以下は、関連した別の話題。Bruce.さん宛。

gawk 3.1.7(windows special Nov 24 2009) Bruce.版
では以下のコードの場合(subとかgsubを使っていないのは
特に意味はありませんが)、UTF8で動かした場合だけ、
意図した通りに動くようです。

S-JISで動かすと元文書が短い(青空文庫にある
「読書子に寄す」)場合は、出力が0バイトの
ファイルとなる場合があります。

元文書が一定規模(7KB)のファイルの場合は
正常出力される場合とがあるようです。

EUCで動かすと、どうやら元文書のサイズにかかわらず、
var部の改行の出力がちょっと変になるようです。

BEGIN部でのセパレータの変更の有無は関係ないようです。

改行は CRLF_TEST.awk も *.TXTもすべてCR+LFとし、
CRLF_TEST.awkも、当然、それぞれの文字コードに
合わせて保存して試しました。

gawk.exe --ctype=SJIS -f CRLF_TEST.awk SJIS.TXT > OutSJIS.TXT
gawk.exe -W ctype=SJIS -f CRLF_TEST.awk SJIS.TXT > OutSJIS.TXT

gawk.exe --ctype=UTF8 -f CRLF_TEST.awk UTF8.TXT > OutUTF8.TXT
gawk.exe -W ctype=UTF8 -f CRLF_TEST.awk UTF8.TXT > OutUTF8.TXT

gawk.exe --ctype=EUC -f CRLF_TEST.awk EUC.TXT > OutEUC.TXT
gawk.exe -W ctype=EUC -f CRLF_TEST.awk EUC.TXT > OutEUC.TXT

でび  http://davi.txt-nifty.com/1984/