#include #include #include void usage() { fprintf(stderr, "tcut -s start_line [0] -e end_line [EOF] [filename]\n"); exit(0); } int main(int argc, char **argv) { int start = -1; int end = -1; int linenum = 0; FILE *fp; char c; while ((c = getopt(argc, argv, "s:e:")) != -1) { switch (c) { case 's': if (sscanf(optarg, "%d", &start) != 1) usage(); break; case 'e': if (sscanf(optarg, "%d", &end) != 1) usage(); break; } } if ( (start > end && start != -1 && end != -1) || (start < -1) || (end < -1) ) usage(); if ((argc - optind) > 0) fp = fopen(argv[optind], "r"); else fp = stdin; while (fread(&c, 1, 1, fp) == 1) { if (linenum >= start) fwrite(&c, 1, 1, stdout); if (c == '\n') linenum++; if (end == linenum) break; } }