ひらがな辞書から、任意のかなを含む行を排除するスクリプト(未完成編)

 JGAWKを用いて、任意のかなを含む行を排除する方法を考えてみました。
 従来は手作業でやっていた排除部分を、どうしてもスクリプト化したかったので……。


 第一段階:次のスクリプトにひらがな辞書を通し、不適合部分を■に置換します。
 スクリプトを使う場合は、コマンドライン上で

jgawk -f r_sinjis.awk hiragana.txt > r_sinjis.txt

などとします。
 下の例では、新JISかなのC段かなのみをコメントアウトしていますので、C段かな以外が全て■に置換されます。
 コメントアウト部を変更することにより、任意のかなを■でマスクすることが出来ます。

BEGIN{
}

{
	#	gsub(/[い]+/,"■");
	#	gsub(/[う]+/,"■");
	gsub(/[ん]+/,"■");
	#	gsub(/[か]+/,"■");
	#	gsub(/[し]+/,"■");
	#	gsub(/[と]+/,"■");
	gsub(/[て]+/,"■");
	#	gsub(/[な]+/,"■");
	gsub(/[の]+/,"■");
	#	gsub(/[は]+/,"■");
	#	gsub(/[た]+/,"■");
	gsub(/[す]+/,"■");
	gsub(/[に]+/,"■");
	gsub(/[で]+/,"■");
	#	gsub(/[き]+/,"■");
	gsub(/[、]+/,"■");
	#	gsub(/[く]+/,"■");
	#	gsub(/[ま]+/,"■");
	gsub(/[っ]+/,"■");
	#	gsub(/[が]+/,"■");
	gsub(/[る]+/,"■");
	#	gsub(/[も]+/,"■");
	gsub(/[こ]+/,"■");
	gsub(/[つ]+/,"■");
	gsub(/[。]+/,"■");
	#	gsub(/[じ]+/,"■");
	gsub(/[れ]+/,"■");
	gsub(/[り]+/,"■");
	gsub(/[ー]+/,"■");
	gsub(/[ょ]+/,"■");
	#	gsub(/[お]+/,"■");
	#	gsub(/[だ]+/,"■");
	gsub(/[あ]+/,"■");
	gsub(/[を]+/,"■");
	#	gsub(/[ら]+/,"■");
	gsub(/[け]+/,"■");
	gsub(/[さ]+/,"■");
	#	gsub(/[ど]+/,"■");
	#	gsub(/[よ]+/,"■");
	gsub(/[「]+/,"■");
	gsub(/[」]+/,"■");
	gsub(/[ち]+/,"■");
	gsub(/[そ]+/,"■");
	gsub(/[せ]+/,"■");
	gsub(/[ひ]+/,"■");
	gsub(/[…]+/,"■");
	#	gsub(/[ゅ]+/,"■");
	gsub(/[え]+/,"■");
	gsub(/[め]+/,"■");
	gsub(/[ふ]+/,"■");
	gsub(/[み]+/,"■");
	#	gsub(/[わ]+/,"■");
	gsub(/[や]+/,"■");
	#	gsub(/[ば]+/,"■");
	#	gsub(/[ゆ]+/,"■");
	gsub(/[ろ]+/,"■");
	gsub(/[ほ]+/,"■");
	gsub(/[び]+/,"■");
	gsub(/[ず]+/,"■");
	gsub(/[ね]+/,"■");
	gsub(/[ぶ]+/,"■");
	gsub(/[む]+/,"■");
	gsub(/[ご]+/,"■");
	gsub(/[げ]+/,"■");
	#	gsub(/[へ]+/,"■");
	#	gsub(/[ぎ]+/,"■");
	gsub(/[ゃ]+/,"■");
	gsub(/[・]+/,"■");
	#	gsub(/[べ]+/,"■");
	gsub(/[ぼ]+/,"■");
	gsub(/[ぜ]+/,"■");
	gsub(/[ざ]+/,"■");
	gsub(/[ぷ]+/,"■");
	#	gsub(/[ぐ]+/,"■");
	gsub(/[ぞ]+/,"■");
	gsub(/[ぱ]+/,"■");
	gsub(/[づ]+/,"■");
	gsub(/[ぽ]+/,"■");
	gsub(/[!]+/,"■");
	gsub(/[ぺ]+/,"■");
	gsub(/[ぴ]+/,"■");
	gsub(/[?]+/,"■");
	gsub(/[ぇ]+/,"■");
	gsub(/[ぁ]+/,"■");
	gsub(/[ぉ]+/,"■");
	#	gsub(/[ぃ]+/,"■");
	gsub(/[ぬ]+/,"■");
	gsub(/[ぢ]+/,"■");
	gsub(/[)]+/,"■");
	gsub(/[(]+/,"■");
	gsub(/[ぅ]+/,"■");

	print $0
}


	#	jgawk '!/■/{print $0;}' r_sinjis.txt


 第二段階:次の一行コマンドに通し、■を含む行を除去しつつ出力します。

jgawk '!/■/{print $0;}' r_sinjis.txt > sinjis_c.txt

 これで、sinjis_c.txt には、新JISかなでC段にある文字のみで打てる文字列が出力されます。


 ただし、重複は削除されていないので……
 ・表計算ソフトのB列にコピー
 ・昇順もしくは降順でソート
 ・表計算ソフトのA1に[ =if(b1=b2;1;0) ]と書き、かなの数だけドラッグして式を複製
 ・sinjis_c.txtに書き戻す

jgawk '/0/{print $0;}' sinjis_c.txt > sinjis_k.txt

などとして、重複していない部分のみを抽出する必要があります。
 うーん、この部分もjgawkのスクリプトにしたいのですが、どうやればいいのか見当も付きません^^;。