Готовый перевод sed & awk / sed & awk: 2.2 Синтаксис командной строки

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «перевод редактируется»

Вызов sed и awk очень похожий. Синтаксис следующий:

команда [опции] имя_скрипта

Как и большинство UNIX програм, sed и awk могут брать данные со стандартного входа и отправлять на стандартный вывод. Если имя файла указано, то входные данные берутся из файла. Вывод содержит обработанную информацию. Стандартный выход - это прямо на экран и обычно вывод программ происходит прямо тут же. Он так же может быть направлен в файл используя I/O переадресацию в шелле, но он должен отличаться от входного файла программы.

Опции для каждой команды разные. Мы покажем многие из этих опций в следующих главах. (Полный список опций для sed можно найти в Приложении А, Краткий справочник по sed; Полный список опций для awk в Приложении B, Краткий справочник по awk.)

В скрипте написано, какие инструкции выполнять. Если скрипт командной строке, он должен быть выделен одинарными кавычками, если он содержит пробели или любой символ, который может быть обработан шеллом($ и * например).

Одна опция является общей для sed и awk, это опция -f, которая позволяет Вам указать имя скрипта. С ростом скрипта в размере, он помещается в файл. Таким образом, Вы можете вызвать sed следующим образом:

sed -f имя_скрипта входной_файл

Рисунок 2.1 показывает основные операции sed и awk. Каждая программа читает одну входную строку за раз из входного файла, создает копию входной строки, и выполняет инструкции, описанные в скрипте, над копией. Таким образом, изменения сделанные над входной строкой не применяются на входном файле.

Рисунок 2.1: Как sed и awk работают.

2.2.1 Написание скриптов

В скрипте Вы говорите программе, что она должна делать. Требуется хотя бы одна строка инструкций. Короткие скрипты могут быть указанны в командной строке; более длинные обычно помещаются в файл, где они могут быть легко проверены и протестированны. При написании скрипта, держите в уме последовательность исполняемых инструкций и как каждая из инструкций изменяет входной файл.

В sed и awk каждая инструкция состоит из двух частей: шаблон и процедура. Шаблон это регулярное выражение отделенное слешами(/). Процедура описывает одно и более действий для выполнения.

Каждая входная строка читается, программа читает первую инструкцию в скрипте и проверяет текущую строку на наличие шаблона. Если шаблон не найдет, то процедура игнорируется и читается следующая инструкция. Если совпадение с шаблоном есть, то действие или действия, указанные в процедуре, выполняются. Читаются все инструкции, а не только первая инстуркция, которая которая совпала по шаблону с входной строкой.

Когда все применимые инструкции были выполнены и применнины к одной строке, sed выводит строку и повторяет цикл для каждой входной строки. Awk, наоборот, не выводит строки автоматически; инструкции в Вашем скрипте контролируют, что в итоге с ними сделать.

Содержание процедур sed и awk очень разное. В sed процедуры содержат команды редактирования, которые используются в строковых редакторах. Большинство команд состоят из одной буквы.

В awk процедуры состоят из програмных операторов и функций. Процедура должна быть выделена фигурными скобками.

В следующем разделе мы рассмотрим несколько скриптов, которые обрабатывают простой список рассылки.

2.2.2 Простой список рассылки

В следующих разделах в примерах используется простой файл, называемый списком. Он содержит список имен и адресов, как показано ниже.

$ cat list

John Daggett, 341 King Road, Plymouth MA

Alice Ford, 22 East Broadway, Richmond VA

Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

Terry Kalkas, 402 Lans Road, Beaver Falls PA

Eric Adams, 20 Post Road, Sudbury MA

Hubert Sims, 328A Brook Road, Roanoke VA

Amy Wilde, 334 Bayshore Pkwy, Mountain View CA

Sal Carpenter, 73 6th Street, Boston MA

Если хотите, создайте этот файл на Вашей системе или используйте подобный, созданный Вами. Так как многие из примеров в этой главе короткие и интерактивные, Вы можете ввести их с клавиатуры и подтвердить результат.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется

Переведено на Нотабеноиде
http://notabenoid.org/book/32181/114520

Переводчики: r0mk

Настройки

Готово:

100.00% КП = 1.0