home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 3
/
FREEWARE.BIN
/
towns_os
/
taropyon
/
he386
/
defs
/
mmlrpl.awk
< prev
next >
Wrap
Text File
|
1980-01-02
|
2KB
|
82 lines
#
# MML テキストの指定のパートだけ置換する By TARO
#
# usage jgawk -f mmlrpl.awk --
# <入力パス名> <出力パス名>
# <パート数> <置換パート> <置換対象文字列> <新文字列>
#
# 指定のパートの文字列だけを置換します。
# <置換対象文字列>には正規表現のワイルドカードを使用可能です。
#
# ※ #includeで外部ファイルをインクルードしているものや#ifdef~#els
# e~#endif を使ったMML テキストでは正常に処理できません。
#
# AWK で作ったたあいのないユーティリティですので,気にする必要あり
# ません。
# 実行にはJGAWK.EXE が必要です。
BEGIN {
if ( ARGC<6 )
{ printf "@ Parameter error!\n"
exit
}
READFILE = ARGV[1]
WRITEFILE = ARGV[2]
PARTMAX = ARGV[3]
rpl_part = ARGV[4]
sea_str = ARGV[5]
new_str = ARGV[6]
rpl_num = 0; # 置換数
ARGC = 2
printf "/* filename '%s' (%s)\n",WRITEFILE,READFILE >WRITEFILE
printf "/* (%d) '%s' -> '%s'\n", rpl_part, sea_str, new_str >WRITEFILE
NULSKIP = 0
}
{ s = $0
if ( match(s,"^/")!=0 )
print s >WRITEFILE
else if ( match(s,"^\.")!=0 )
{ if( index(s,"next")!=0 )
{ PART = 0
print "found next\n"
} else if( index(s,"partmax")!=0 )
{ PARTMAX = $2
printf "partmax = %d\n", PARTMAX
} else if( index(s,"nulline")!=0 )
{ if( index(s,"skip")!=0 )
NULSKIP = 1
else if( index(s,"rest")!=0 )
NULSKIP = 0
}
print s >WRITEFILE
} else if( match(s,"^#")!=0 )
print s >WRITEFILE
else
{ if( NULSKIP==0 )
{ if ( PART == rpl_part )
mml_rpl()
++PART
if ( PART >= PARTMAX )
PART = 0
} else if( NF!=0 )
{ if ( PART == rpl_part )
mml_rpl()
++PART
if ( PART >= PARTMAX )
PART = 0
}
print s >WRITEFILE
}
}
function mml_rpl( i ) {
i = gsub( sea_str, new_str, s);
rpl_num = rpl_num + i
}
END {
printf "$ %dコ置換しました\n",rpl_num
}