#include #include #include #include int main(int argc, char *argv[]) { char buf[10000]; FILE *fh; if(2 != argc) { fputs("Usage: filter \n", stderr); exit(1); } if(!(fh = fopen(argv[1], "r"))) { perror("Cannot open log"); exit(1); } while(!fgets(buf, sizeof(buf), fh)) { static const size_t START_OFFSET = 50; size_t len = strlen(buf); char *endp; if('\n' != buf[len-1]) { fputs("WARNING: line did not fit in buffer, skipped\n", stderr); continue; } endp = buf + START_OFFSET; len = 20; // To search for a blank after the field instead of using a fixed width // endp = strchr(buf + START_OFFSET, ' '); // len = endp ? endp - (buf + START_OFFSET) : len - START_OFFSET; // careful with strchr()==NULL fwrite(buf + START_OFFSET, 1, len, stdout); } }