...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

grep

今度は,一致する部分文字列を含む行を一覧表示するプログラム grep を D で作ってみた.
ソースファイル grep.d の中から, ***.***(***) の形式で関数呼び出しをしている行を抽出して出力したサンプル付き.
無駄な処理があるとかは気にしないでください(^^;


// > type grep.d | grep .+\..+\(.*\)
// char[] line = stdin.readLine();
// if( stdin.eof() ) break;
// char[][] partsOfString = reg.match(line);
// stdout.printf("%.*s", s);
// stdout.writeLine("");

private import std.regexp;
private import std.stream;

int main(char[][] argc)
{
RegExp reg = new RegExp(".*" ~ argc[1] ~ ".*","ig");

for(;;)
{
char[] line = stdin.readLine();
if( stdin.eof() ) break;
char[][] partsOfString = reg.match(line);
if( partsOfString.length == 0 ) continue;
foreach(char[] s; partsOfString)
{
stdout.printf("%.*s", s);
}
stdout.writeLine("");
}

return 0;
}