Apache のアクセスログを TSV に変換する
setbuf 重要. stdout に fflush するのは初めてだw
#include <stdio.h> int main() { int c; int q = 0; int b = 0; char buf[BUFSIZ]; setbuf(stdout, buf); while ((c = getchar()) != EOF) { switch (c) { case ' ': case '[': case ']': case '"': if ((c == ' ') && !q && !b) { putchar('\t'); } else if ((c == '[') && !q) { b = 1; } else if ((c == ']') && !q) { b = 0; } else if (c == '"') { q = !q; } else { putchar(c); } break; default: putchar(c); } } fflush(stdout); return 0; }