正規表現を利用して日本語文書ファイルの校正支援を行う
同等のperlプログラムへ
#-----------------------------------------------------------------------
# 日本語校正支援
#
# 使用方法
# gawk -f proof.awk -v rule=ルールファイル, 作業ファイル, ...
#-----------------------------------------------------------------------
BEGIN {
FS = "\t";
RULENUM = 0;
# ルールの読み込み
while( getline <rule > 0 ) {
RULENUM++;
RULE[RULENUM] = $0;
PATTERN[RULENUM] = $1;
COMMENT[RULENUM] = $2;
if ( PATTERN[RULENUM] == "" ) {
printf( "パターンがありません:%d:%s\n", \
RULENUM, $0 );
exit;
}
if ( COMMENT[RULENUM] == "" ) {
printf( "注釈がありません:%d:%s\n", \
RULENUM, $0 );
exit;
}
}
if ( RULENUM == 0 ) {
printf( "ルールがないかファイルが開けません\n");
exit;
}
close( rule );
}
{
for ( i = 1; i <= RULENUM; i++ ) {
string = $0;
matched = gsub( PATTERN[i], "<<&>>", string );
if ( matched > 0 ) { # matched
printf( "%s:%d\t%d:%s|\t%s\n",
FILENAME, FNR, i, COMMENT[i], string );
}
}
}
rule.txt という名前で用意されているとします。[0-9] 半角数字にする [A-Z] 半角英字にする [a-z] 半角英字にする [()] 半角の括弧にする およぼ[さしすせそ] 及ぼす 気付[かきくけこい] 気づく ^$ 空行 ^従って 文頭の場合は「したがって」
sample.txt という名前で用意されているとします。3回失敗した。10回成功した。 PCのOSはLinuxがよい。 (括弧が正しく対応していない) 悪影響をおよぼしています。 気付いたときには遅かった。 従って、彼は彼女の命令に従っている。
とタイプします。c:\awk> gawk -f proof.awk -v rule=rule.txt sample.txt
と出力されるはずです。 なお、ルールファイルを別の名前で保存している場合には、sample.txt:1 1:半角数字にする| <<3>>回失敗した。<<1>><<0>>回成功した。 sample.txt:2 2:半角英字にする| <<P>><<C>>の<<O>><<S>>はLinuxがよい。 sample.txt:3 4:半角の括弧にする| (括弧が正しく対応していない<<)>> sample.txt:4 5:及ぼす| 悪影響を<<およぼし>>ています。 sample.txt:5 6:気づく| <<気付い>>たときには遅かった。 sample.txt:6 7:空行| <<>> sample.txt:7 8:文頭の場合は「したがって」| <<従って>>、彼は彼女の命令に従っている。
のrule.txtの部分を入れ替えてください。c:\awk> gawk -f proof.awk -v rule=rule.txt sample.txt
Copyright © 2004 TKEN