Indexへ
(11498)//【11501】//(11502)
------------------------
【タイトル】Lite & Seen Lite / JW_CAD 外部変形 / rubyによるプログラムの研究報告
【記事番号】 11501 (*)
【 日時 】07/12/15 20:11
【 発言者 】Kazuo Miyake

 ファイルから文字列を検索できる DOSコマ
ンド:Findstr(Windows2000 から) を利用し
て ruby -anx による 外部変形 を 考えてみ
ました。この手法は Awk によく似ています。

 プログラムのパターンは

@rem *****
@echo off
findstr 〜 jwc_temp.txt | ruby -anx %~f0
exit

REM #jww
 〜
REM #e

#!ruby
BEGIN{ 〜 }
 〜
END{ 〜 }

のようにします。


 連続線を引くプログラムで考えます。

 従来、ruby1行プログラムなら

@rem 線を引く
@echo off
ruby -ane 'puts "%%s %%s" %% $F[1,2] if /^^hp[1-9]/' jwc_temp.txt > jwc_temp.bak
del jwc_temp.txt
ren jwc_temp.bak jwc_temp.txt
exit
REM #jww
REM #1-
REM #99#
REM #e

 ですが Findstr と ruby -anx なら

@rem 線を引く
@echo off
findstr "^hp[1-9]" jwc_temp.txt | ruby -anx %~f0
exit
REM #jww
REM #1-
REM #99#
REM #e
#!ruby
BEGIN{ $>=open("jwc_temp.txt","w") }
puts "%s %s" % $F[1,2]

となります。

 標準出力 $>を jwc_temp.txt とできること
が この手法の特長です。


 参考のため
 円を点に変換するプログラムを紹介します。

@rem 円を点に変換する
@echo off
findstr /v "^hq" jwc_temp.txt | ruby -anx %~f0
exit
REM #jww
REM #h1
REM #g1
REM #e
#!ruby
BEGIN{
    $>=open("jwc_temp.txt","w")
    puts "hd"
}
case $_
when /^ci/
    puts "pt %s %s" % $F[1,2]
    print $_ #円を残す
else
    print $_
end


 皆様方のご健康とご活躍をお祈り申し上
げます。


       記録 2007.12.15 三宅