On Tue, 16 Oct 2007 21:08:54 +0900
davi <davi-1984@...> さんwrote:
> ところで、AWKでagrepみたいな「x文字違い検索」ってできません?
>
> 「ハンカチ王子」で2文字違いまで許容、って指定だと、
> 「ハニカミ王子」は当然のこととして、
>
> ハゲカケ王子
> ハナカミ王子
> ハミガキ王子
> ハイカイ王子
> ハダカノ王子
> ハルカゼ王子
> トンカツ王子
>
> などにヒット、みたいな…。
>
> オートマトンとか言われてもよくわからんのですけど。
オートマトンというよりは単に文字列の比較なんですけどね。文字列の先頭か
ら比較する。カとガは区別します。AWKでも同様なアイデアで書けると思います
が・・・AWKではsplitで空文字列で文字列を文字単位で分割できなかったかな。
-----^ agrep.pl
# usage: jperl agrep.pl 2 ハンカチ王子
$misn = shift @ARGV;
$pattern = shift @ARGV;
@chars = split("",$pattern);
while(<DATA>){
chomp;
@charsin = split("",$_);
for($i=0; $i<=$#chars; $i++){
if($chars[$i] ne $charsin[$i]){
$mismatch++;
}
}
if($mismatch <= $misn){
print $_,"\n";
}
$mismatch = 0;
}
__DATA__
ハニカミ王子
ハゲカケ王子
ハナカミ王子
ハミガキ王子
ハイカイ王子
ハダカノ王子
ハルカゼ王子
トンカツ王子
-----$
藤岡 和夫
kazuf@...
日曜プログラマのひとりごと http://homepage1.nifty.com/kazuf/renewal.html