Читаем Командная строка Linux полностью

Добавление адреса 1 в команду гарантирует применение операции подстановки только к первой строке в нашем однострочном потоке. Можно указать другое число:

[me@linuxbox ~]$ echo "front" | sed '2s/front/back/'

front

Теперь, как видите, редактирование не было выполнено, потому что во входном потоке отсутствует строка с номером 2.

Адреса можно выражать множеством способов. В табл. 20.7 перечислены адреса, чаще других используемые на практике.

Таблица 20.7. Форма записи адресов в команде sed

Адрес

Описание

n

Номер строки, где n — положительное число

$

Последняя строка

/регулярное_выражение/

Строки, соответствующие простому регулярному выражению POSIX. Обратите внимание, что регулярное выражение должно ограничиваться символом слеша с обеих сторон. При желании можно использовать другие ограничительные символы, определив регулярное выражение в форме \cрегулярное_выражениеc, где c  — альтернативный символ-ограничитель

адр1,адр2

Диапазон строк с номерами от адр1 по адр2 включительно. Каждый адрес может иметь любую форму из перечисленных выше

первая~шаг

Соответствует строке с номером первая и каждой последующей с указанным шагом. Например, адрес 1~2 соответствует всем строкам с нечетными номерами, а адрес 5~5 соответствует пятой строке и каждой пятой последующей

адр1,+n

Соответствует строке с адресом адр1 и следующим за ней n строкам

adr!

Соответствует всем строкам, кроме строки с адресом адр, где адрес может иметь любую форму из перечисленных выше

Рассмотрим разные способы адресации строк на примере файла distros.txt, созданного выше в этой главе. Сначала попробуем диапазоны номеров строк:

[me@linuxbox ~]$ sed -n '1,5p' distros.txt

SUSE             10.2    12/07/2006

Fedora           10      11/25/2008

SUSE             11.0    06/19/2008

Ubuntu           8.04    04/24/2008

Fedora           8       11/08/2007

В нашем примере мы вывели строки с 1 по 5. Для этого использовалась команда p, которая просто выводит строки, соответствующие адресам. Однако здесь нам пришлось добавить параметр -n (параметр подавления автоматического вывода), чтобы программа sed не выводила все строки, что она делает по умолчанию.

Далее попробуем задействовать регулярное выражение:

[me@linuxbox ~]$ sed -n '/SUSE/p' distros.txt

SUSE             10.2    12/07/2006

SUSE             11.0    06/19/2008

SUSE             10.3    10/04/2007

SUSE             10.1    05/11/2006

Включив регулярное выражение /SUSE/, заключенное в символы слеша, мы смогли выделить строки подобно тому, как это делает программа grep.

Наконец, попробуем применить оператор отрицания, добавив в адрес восклицательный знак (!):

[me@linuxbox ~]$ sed -n '/SUSE/!p' distros.txt

Fedora           10      11/25/2008

Ubuntu           8.04    04/24/2008

Fedora           8       11/08/2007

Ubuntu           6.10    10/26/2006

Fedora           7       05/31/2007

Ubuntu           7.10    10/18/2007

Ubuntu           7.04    04/19/2007

Fedora           6       10/24/2006

Fedora           9       05/13/2008

Ubuntu           6.06    06/01/2006

Ubuntu           8.10    10/30/2008

Fedora           5       03/20/2006

Здесь мы видим ожидаемый результат: все строки из файла, кроме совпавших с регулярным выражением.

Пока что мы познакомились лишь с двумя командами редактирования, поддерживаемыми программой sed, s и p. В табл. 20.8 приводится более полный список основных команд редактирования.

Таблица 20.8. Основные команды редактирования sed

Команда

Описание

=

Выводит номер текущей строки

a

Добавляет текст в конец текущей строки

d

Удаляет текущую строку

i

Вставляет текст в начало текущей строки

p

Выводит текущую строку. По умолчанию sed выводит все строки, но редактирует только соответствующие указанному адресу. Поведение по умолчанию можно отменить, передав параметр -n

q

Завершает sed без обработки остальных строк. Если параметр -n не указан, выводит текущую строку

Q

Завершает sed без обработки остальных строк

s/регулярное_выражение/строка_замены/

Замещает совпадение с регулярным выражением строкой замены. Строка замены может включать специальный символ &, обозначающий совпадение с регулярным выражением. Кроме того, строка замены может включать последовательности, с \1 по \9, обозначающие совпадения с соответствующими подвыражениями в регулярном выражении. Дополнительную информацию по этой теме можно найти в обсуждении обратных ссылок ниже. За символом слеша, закрывающим строку замены, может следовать необязательный флаг, определяющий дополнительные особенности поведения команды

y/множество1/множество2

Выполняет перекодирование, преобразуя символы из первого множества в символы второго множества. Имейте в виду, что, в отличие от программы tr, sed требует, чтобы оба множества были одинаковой длины

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT