На главную страницу | Новости  |  Ссылки | Контакты

Spyphy Farnsworth
Квантовая реальность. Кибернетика. Искусственный интеллект


Обработка текста с помощью AWK и SED


sed (Stream EDitor) - это стандартный потоковый текстовый редактор линукса, входящий в любой дистрибутив.

awk - представляет собой интерпретируемый си-подобный язык построчного разбора и обработки входного потока (обычно текстовых) по заданным шаблонам.

AWK


awk [-F разделитель_полей] 'сценарий' входной_файл

Напр.,

awk -F: 'сценарий' входной_файл

awk -f файл_сценария входной_файл

SED


Формат:

sed [-n] [-e script] [-f sfile] [files]

sed [оптии] 'команды' входной_файл

sed [оптии] -f файл_сценария входной_файл

файл_сценария.sed [оптии] входной_файл

Оптии:

-n -- запрет вывод на экран всех строк (а только тех, к которым применялась команда p);

-e -- далее идут команды

-f -- файл сценария

Команда SED :

[address[,address]] function [arguments]

Адрес:

Десятичный номер строки;

$ - последняя строка input ;

Регулярное выражение.

Функции SED:

a \text - Добавить "text" после указанной строки (вывести), потом считать следующую.

i \text - Вывести текст на output перед указанной строкой.

b label - Перейти на метку, устанавливаемую, с помощью функции ":" , если label пуст, то перейти в конец скрипта.

c \text - Удалить pattern space и вывести "text" на output .

d - Удалить pattern space .

D - Удалить pattern space до вставленной newline .

g - Заместить содержимое pattern space содержимым буфера hold space .

G - Добавить к содержимому pattern space содержимое буфера hold space .

h - Заместить содержимое буфера hold space на содержимое pattern space .

H - Добавить к содержимому буфера hold space содержимое pattern space .

n - Вывести pattern space на output и считать следующую строку.

N - Добавить следующую строку к pattern space , разделяя строки вставленным newline .

p - Скопировать pattern space на output .

P - Скопировать pattern space до первой вставленной newline на output .

q - Переход на конец input . Вывести указанную строку, (если нет флага -n ) и завершить работу SED .

r rfile - Читать содержимое rfile и вывести его на output прежде чтения следующей строки.

s - Функция контекстной замены. (См. 5.)

t label - Перейти на метку, устанавливаемую с помощью функции ":" , если для этой строки была осуществлена замена с помощью функции "s" . Флаг осуществления замены восстанавливается при чтении следующей строки или при выполнении функции "s" .

w wfile - Добавить pattern space к концу файла wfile . (Максимально можно использовать до 10 открытых файлов.)

x - Поменять местами содержимое pattern space и буфера hold space .

y /str1/str2/ - Заменить все вхождения символов из str1 на соответствующие из str2 . Длины строк должны быть равными.

! func - Применять функцию func (или группу функций в {} ) к стокам НЕ попадающим в указанные адреса.

: label - Устанавливает метку для перехода по "b" и "t" командам.

= - Выводит номер строки на output как строку.

{ - Выполняет функции до "}" , только когда выбрано pattern space . Группировка функций.

- Пустая команда игнорируется.

# - Комментарий.

( "#n" в скрипте равносильно установке флага -n )

Пример

sed '$a\AAA' file.txt -- добавляет текст в конец





galaxy