読者です 読者をやめる 読者になる 読者になる

最近のスクリプト

sed/awk NYACUS

お仕事(まごころこめた HTML づくり)用に、じわっじわっと書いています。

実際の文字コードが META CHARSET と合ってるのチェック

find(f) で、実行されたディレクトリ以下にある、引数の正規表現にマッチするファイルを拾って、nkf -g で自動判別した文字コードの結果と共に awkスクリプトに渡しています。

わざわざ bash に渡しているのは、NYACUS の逆クォート展開がなかなかにオーバーフローしてしまうためです。

_nya
alias checkcharset bash "d:\scripts\checkcharset\main.sh"
main.sh
for i in `findf ./ | egrep $1`
do
	echo $i
	gawk -f "d:\scripts\checkcharset\awkscript" autocharset=`nkf -g $i` $i
done

一行目の find(f) で、-name じゃなくて (e)grep になってるのは「正規表現が使いたいから」ではなくて、単に僕の NYACUS → bash タッグでなぜか -name がうまく動かなかったからです…。

awkscript
BEGIN {
	IGNORECASE = 1;
	HasCharset = 0;
	MetaCharset = "";
}
/<meta.+Content-Type.+charset=/ {
	HasCharset = 1;

	sub(/^.*<meta.+Content-Type.+charset=/,"");
	sub(/".*$/,"");

	MetaCharset = $0
}
END {
	if( HasCharset == 0 ) {
		print "No Charset!!";
	}
	else {
		if(tolower(autocharset) == tolower(MetaCharset)) {
			print "ok:" autocharset;
		}
		else {
			print "dame";
			print "auto:" autocharset
			print "meta:" MetaCharset
		}
	}
}

Tidy かけちゃうぞ

バリデート目的で Tidy をかける。書き換えは無し。Tidy くんは口うるさいので、sed で無視したいエラーを消しちゃったりして…。

_nya
alias tidise bash "d:\scripts\tidise\main.sh"
main.sh
for i in `findf ./ | egrep $1`
do
	echo $i
	tidy -errors -quiet -raw $i 2>&1 | sed -f "d:\scripts\tidise\ignorelist"
done

Tidy くんはマナーが良いのでエラーを標準エラー出力に出してくれますが、今回はそのエラーこそ欲しい内容なので標準出力にぶっこんで sed にかけます。

ignorelist
/lacks "summary" attribute/d

今のとこ、内容これだけ…。

title 調べちゃうぞ

_nya
alias gettitles bash "d:\scripts\gettitles\main.sh"
main.sh
for i in `findf ./ | egrep $1`
do
	echo $i
	sed -n -f "d:\scripts\gettitles\sedscript" $i | nkf -s
done

最後強引に nkfShift_JIS にしてから NYACUS のコンソールに出力してます。

sedscript
/<title>/ {
	s/^.*<title>//
	s/<\/title>.*$//
	s/\(^.*\)/	\1/p
}

ごりごりっ…、と。

刹那のきらめき

でも、こうして保存して使い回しているからえらいスクリプトくんだとかそういうことは全然無くて、その場でふと書き殴って使い捨てているスクリプト野郎共も同じくらいありがたい存在であります。ありがたや、ありがたや…。供養のつもり…。