Поскольку в UNIX есть все эти замечательные фильтроподобные программы (такие как grep
, sed
, tr
и так далее), как проще всего написать один из них на стандартном C?
Под фильтром я подразумеваю программу, которая читает стандартный ввод, выполняет некоторые манипуляции с данными, а затем записывает их в стандартный вывод.Это полезно при построении конвейеров команд, каждая из которых выполняет некоторые дополнительные манипуляции с данными, например:
grep xyzzy input.file | tr '[A-Z]' '[a-z]' | sed 's/plugh/PLUGH/g'
(каждый из символов канала |
соединяет стандартный вывод предыдущей команды со стандартным вводом следующего, отсюда и метафора конвейера).
Допустим, мне нужен код, преобразующий все символы верхнего регистра в нижний регистр. И да, я понимаю, что эта конкретнаяпроблема может быть решена с помощью UNIX:
tr '[A-Z]' '[a-z]'
но это просто пример.
На самом деле мне нужен простейший стандартный исходный код C для реализации такого фильтра.