Мы — долго запрягаем, быстро ездим, и сильно тормозим.

RFC
Программирование
  shell
  sed
  awk
FreeBSD
man
EXIM


www.lissyara.su —> документация —> Программирование —> sed

ПОТОКОВЫЙ РЕДАКТОР 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){ } Скобки группируют команды.


(с) А.Соловьев



Ссылка на обсуждение: http://forum.lissyara.su/viewforum.php?f=32.



Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 12 чел.
За последние 30 мин было: 49 человек
За сегодня было
188 показов,
58 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1156 секунд
Из них PHP: 57%; SQL: 43%; Число SQL-запросов: 46 шт.
Исходный размер: 56358; Сжатая: 10418