AWK - это язык программирования, разработанный Ахо, Вайнбергером и Керниганом. gawk
является одной реализацией AWK, но есть несколько других, включая mawk
и nawk
. Это полноценный язык программирования с переменными, управляющими структурами и ассоциативными массивами, но в целом оптимизированный для работы с видами текстовых данных, обычно встречающихся в системах UNIX.
sed
- это потоковый редактор, вдохновленный ed
редактором. Он имеет простой набор команд, в основном ограниченный построчным редактированием. sed
команды могут быть легко имитированы в awk
. Следующее эквивалентно:
sed -e 's/foo/bar/g'
awk '{ gsub(/foo/, "bar"); print $0 }'
awk '{gsub(/foo/,"bar")}1'
grep
находит текст. Основные функции grep
можно легко имитировать в sed
и awk
. Следующее эквивалентно:
grep 'foo.bar'
sed -n -e '/foo.bar/p'
awk '/foo.bar/ { print $0 }'
awk '/foo.bar/'
Упс, пропущено find
.
find
обходит дерево файловой системы, выполняя действия по заданному критерию. Например,
find . -name '.*' -prune -o ! -name '*~' -type f -exec cat '{}' \;
будет проходить все файлы и каталоги, начиная с текущего каталога .
, исключая (и не переходя в) любые каталоги с именами, начинающимися с .
, и запускать cat
для каждого файла, имя которого не заканчивается на ~
(с результатом распечатки содержимого этого файла). Опять же, это было бы выполнимо в AWK или Perl или во многих других языках программирования (или даже в чистой оболочке, в этом примере), но проще и быстрее писать и понимать с помощью специального инструмента.