#!/usr/local/bin/ici /* * grep.ici - simple grep-like program in ICI */ static grep(in, pattern) { auto regex; auto line; regex = regexp(pattern); while (line = getline(in)) /* getline() returns NULL at eof */ if (line ~ regex) /* `~' is the "match" operator */ printf("%s\n", line); } if (argc < 2) { printf(stderr, "usage: %s pattern [file...]\n", argv[0]); exit(1); } if (argc == 2) grep(stdin, argv[1]); else { auto f, fn; forall (fn in interval(argv, 2)) { if (fn == "-") grep(stdin, argv[1]); else { grep(f = fopen(fn), argv[1]); close(f); } } }