Kiev1.org Карта сайта Файлы Фотографии Киева
  
Реклама:






Разделы
 
 Sysadmin
 Антиглобалисты
 Ереси и секты
 Катастрофы
 Компьютерные новости
 Непроверенное
 О проекте
 О фотогалерее
 Политика и власть
 Православие
 Предприятия Украины
 Протесты Людей против нового мирового концлагеря
 Разное
 Россия
 Старец Паисий 1924-1994
 Стояние за Истину
 Суды в Украине
 Тайна беззакония
 экуменизм


Внимание! Читая пророчества на этом сайте помните что достоверность трудно проверить и все может во времени изменяться - самое главное думать своей головой и не верить легкомысленно всему что говорят, особенно советское телевидение
"О дне же том, или часе, никто не знает, ни Ангелы небесные, ни Сын, но только Отец (Мк. 13, 32)"

ПОТОКОВЫЙ РЕДАКТОР sed



sed и awk (учебное пособие) (с) А.Соловьев
www.nevod.ru/linux/doc/sed/
I. ПОТОКОВЫЙ РЕДАКТОР sed

Команда имеет формат:

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

Команда копирует файлы (по умолчанию со стандартного входа)
на стандартный выход, редактирует их в соответствии со своими(!)
командами, размещенными в "script" (в командном файле или строке
редактора [а не shell!]). По флагу "-f" берет берет файл команд
из файла "sfile"; Если есть только опция "-e script", то флаг
"-e" можно опустить. Флаг "-n" подавляет вывод (происходящий по
умолчанию). "script" состоит из команд редактирования, по одной в
строке, имеющих формат:

[ addr [ , addr ] ] cmd [ args ]

"sed" циклически преобразует входные строки в выходные.
Адреса "[ addr [ , addr ] ]" - это либо номера строк, либо
последняя строка (символ "$"), либо регулярные выражения в стиле
редактора "ed":
- "" используется в многострочных командах для
экранирования продолжения строки.
- "." совпадает с любым символом.
- Если адреса не указаны - просматриваются все входные
строки.
- Если один адрес, то выбираются совпадающие строки.
- Если заданы два адреса, выбираются строки в заданном
интервале.
- "!cmd" выполняется команда "cmd", для строк, которые не
были выбраны по адресам.

Для следующих (основных) функций (команд) максимальное число
допустимых адресов указано в скобках.

(1)a
text Добавляет text после указанной строки

Команда:
who
Результат:
root tty1 Mar 13 17:23
mas tty2 Mar 13 18:50
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24

Пример:
who | sed '2a
новая строка
'

Результат:
root tty1 Mar 13 17:23
mas tty2 Mar 13 18:50
новая строка
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24


(2)b label
Осуществляет переход к команде ("cmd") "label:cmd" Если
метка ("label") отсутствует, то переход на конец командного файла.

Пример:
who | sed '2a
новая строка
b lb
2d
: lb 3d
'

Результат:
root tty1 Mar 13 17:23
mas tty2 Mar 13 18:50
новая строка
sae tty5 Mar 13 17:24


(2)c
text Удаляет выбранные строки и заменяет их на "text'.

Пример:
who | sed '/sae/ c
cтрока замены
'

Результат:
root tty1 Mar 13 17:23
mas tty2 Mar 13 18:50
строка замены
строка замены

(2)d Удаляет найденные строки

Пример:
who | sed '2,4d'

Результат:
root tty1 Mar 13 17:23

(1)i
text Вставляет "text" на место выбранной строки.
(сравните с "a")
Пример:
who | sed '2i
новая строка
'

Результат:
root tty1 Mar 13 17:23
новая строка
mas tty2 Mar 13 18:50
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24



(2)p Выводит найденные строки (используется с флагом "-n").

(1)q Выходит из "sed".

(2)r rfile
Читает файл "rfile" и выдает на выход.

(2)s/reg_expr/rpl/flags
Заменяет регулярное выражение "reg_expr" на "rpl" с учетом
флагов "flags":
g - глобально (по всей строке)
p - выводить замены
w wfile - сохранять заменяемое в "wfile".

Пример:
who | sed 's/t/T/'
echo
who | sed 's/t/T/g'

Результат:
rooT tty1 Mar 13 17:23
mas Tty2 Mar 13 18:50
sae Tty6 Mar 13 17:24
sae Tty5 Mar 13 17:24

rooT TTy1 Mar 13 17:23
mas TTy2 Mar 13 18:50
sae TTy6 Mar 13 17:24
sae TTy5 Mar 13 17:24

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

Пример:
who | sed 'y/sae/SAE/'

Результат:
root tty1 MAr 13 17:23
mAS tty2 MAr 13 18:50
SAE tty6 MAr 13 17:24
SAE tty5 MAr 13 17:24


(2)! cmd Команда(ы) "cmd" применяются к невыбранным строкам.

Пример:
who | sed '2,4!d'

Результат:
mas tty2 Mar 13 18:50
sae tty6 Mar 13 17:24
sae tty5 Mar 13 17:24

(1)= Выдает номера строк.

Пример:
who | sed =

Результат:
1
root tty1 Mar 13 17:23
2
mas tty2 Mar 13 18:50
3
sae tty6 Mar 13 17:24
4
sae tty5 Mar 13 17:24

(2){ } Скобки группируют команды.


-------------"--------------


II. ЯЗЫК ОБРАБОТКИ ШАБЛОНОВ awk
(Aho, Weinberg, Kernigan)

awk - команда контекстного поиска и преобразования текста.
Она - фильтр. Ее можно рассматривать как оболочку "awk" в
оболочке "shell".

1. СТРУКТУРА awk-ПРОГРАММЫ

Программа состоит из операторов (правил), имеющих вид:

шаблон {действие}
шаблон {действие}
. . .

Частные случаи:

{действие} - когда действие выполняется для всех строк.
шаблон - когда выводятся строки с данным шаблоном.


Действие может состоять из последовательности операторов,
разделяемой ";" или переводом строки или закрывающей скобкой.

Возможны комментарии (как в shell "#.........").

Пример:
Для дальнейших примеров возьмем входной файл "f-awk"
( фамилия инициалы год-приема-на-работу возраст ):

Иванов И.И. 1980 50
Петров А.В. 1979 40
Сидоров С.К. 1979 40
Хведоров И.Х. 1970 60

awk '{print}' f-awk # выдает весь текст;
echo
awk '/до/ {print}' f-awk # выдает строки, где есть "до".
echo
awk '/до/ {}' f-awk # выдает строки, где есть "до"
echo
awk '/до/ {print("Привет!")}' f-awk

Результат:
Иванов И.И. 1980 50
Петров А.В. 1979 40
Сидоров С.К. 1979 40
Хведоров И.Х. 1970 60

Сидоров С.К. 1979 40
Хведоров И.Х. 1970 60

Сидоров С.К. 1979 40
Хведоров И.Х. 1970 60

Привет!
Привет!

Существует два оператора специального вида ("BEGIN"-
начальные установки и "END" - "последействия"):

BEGIN {действие}
шаблон {действие}
шаблон {действие}
. . .
END {действие}


2. ВЫЗОВ awk

Возможны два основных варианта:

1) awk [-Fc] 'prog.awk' [files]

Это простейший случай, когда программа (заключенная в
кавычки " ' ") находится в теле команды,
"-Fc" - флаг, меняющий стандартный разделитель полей на "c"
"file" - имя файла исходных данных, при его отсутствии - со
стандартного входа. (Этот формат исползован в начальных примерах).

cat f-awk | awk '/до/ {print}'

и

awk '/до/ {print}' < f-awk

дают результат, аналогичный

awk '/до/ {print}' f-awk

Для демонстрации действия флага "-Fc" рассмотрим вызовы:

awk '/до/ {print($2)}' f-awk
awk -F0 '/до/ {print($2)}' f-awk

На экран будет выведено:

С.К.
И.Х.

6

Первая команда "awk" выведет вторые поля (благодаря
позиционной переменной "$2") строк, содержащие "до". (Кстати,
позиционная переменная "$0" соответсвует всей строке).
Во втором случае, благодаря флагу "-F" стандартные
разделители заменены на символ "0", т.е. теперь выбранные строки
воспринимаются, как разбитые на следующие поля:

Сидоров С.К. 1979 40
---------------------^--------------------
1-е поле 2-е поле (пусто)

Хведоров И.Х. 1970 60
-----------------^---^--------------------
1-е поле 2-е 3-е поле (пусто)


2) awk [-Fc] -f prog.awk [files]

Флаг "-f" говорит о том, что awk-программу надо брать из
файла, имя которого указано следом (имя может быть произвольным и
расширение ".awk" добавлено здесь просто из эстетических
соображений).

3. awk-ПЕРЕМЕННЫЕ И ВЫРАЖЕНИЯ

В языке awk выделяются две группы переменных:
предопределенные и декларированные в программе. Исходные значения
предопределенных переменных устанавливаются интерпретатором awk в
процессе запуска и выполнения awk-программы.
К предопределенным относятся: Умолчания:
NR номер текущей строки;
NF число полей в текущей строке;
RS разделитель строк на вводе; "





 ШПАРГАЛКА ПО SED
 Смешанные приемы
  ПРОГРАММИРОВАНИЕ НА shell (UNIX)
 Команды редактирования sed
 Из Книги «ЦВЕТНИК ДУХОВНЫЙ» (на церковно-славянском языке), изд. 1863 г.).


Внимание! Читая пророчества на этом сайте помните что достоверность трудно проверить и все может во времени изменяться
"О дне же том, или часе, никто не знает, ни Ангелы небесные, ни Сын, но только Отец (Мк. 13, 32)"