Этот раздел переписал Kees (смотрите раздел "Благодарность").
Некоторые из этих команд практически содержат полноценные командные языки. Здесь объясняются только основы таких команд. Для более подробной информации внимательно просмотрите man-страницы каждой команды.
sed (потоковый редактор)
Sed - это неинтерактивный редактор. Вместо того, чтобы изменять файл движением курсора на экране, следует использовать сценарий инструкций по редактированию для sed, а также имя редактируемого файла. Вы также можете рассматривать sed в качестве фильтра. Посмотрите на некоторые примеры:
$sed 's/to_be_replaced/replaced/g' /tmp/dummy
Sed заменяет строку 'to_be_replaced' строкой 'replaced', читая файл /tmp/dummy . Результат отправляется на стандартный вывод (обычно, на консоль), но Вы также можете добавить '> capture' в вышеуказанную строку, чтобы sed отправлял вывод в файл 'capture'.
$sed 12, 18d /tmp/dummy
Sed отображает все строки, за исключением строк с 12 по 18. Исходный файл этой командой не изменяется.
awk (манипулирование файлами данных, выборка и обработка текста)
Существует большое количество реализаций языка программирования AWK (наиболее распространенными интерпретаторами являются gawk из проекта GNU и "новый awk" mawk.) Принцип достаточно прост: AWK находится в поиске шаблона; для каждого подходящего шаблона выполняется какое-нибудь действие.
Автор повторно создал файл dummy, содержащий следующие строки:
"test123
test
tteesstt"
$awk '/test/ {print}' /tmp/dummy
test123
test
Шаблон, искомый AWK, это 'test', а действие, выполняемое AWK при обнаружении строки в /tmp/dummy с подстрокой 'test', это 'print'.
$awk '/test/ {i=i+1} END {print i}' /tmp/dummy
3
Если Вы находитесь в поиске нескольких шаблонов, замените текст между кавычками на '-f file.awk'. В этом случае, Вы можете записать все шаблоны и действия в файле 'file.awk'.
grep (выводит строки, соответствующие искомому шаблону)
Мы рассматривали несколько команд grep в предыдущих главах, которые отображали строки, соответствующие шаблону. Однако grep способен выполнять значительно большее.