Разница между 1.39 и текущей версией ЯзыкSed.
@@ -1,8 +1,24 @@
-- Потоковый редактор sed
+= Потоковый редактор sed
 
-Один из долгожителей мира Unix, к сожалению позабытый инструмент эффективного решения множества задач, связанных с обработкой текста.
+Один из долгожителей мира Unix, к сожалению позабытый инструмент эффективного решения множества задач, связанных с обработкой текста. По утверждению авторов языка ''sed'', разработанного в 1978 году как расширение редактора ''ed'', новый редактор предназначался для трёх специфичных случаев:
 
--- Основы языка
+	1 Работа с большими по объёму файлами, редактирование которых в интерактивном режиме неудобно.
+	1 Редактирование файлов любого размера в том случае, если последовательность команд редактирования неудобна для интерактивного ввода.
+	1 Выполнение множества команд редактирования эффективно за один проход (критично для организации конвеера).
+
+Утилита ''sed'' входит в состав дистрибутивов Unix; стандарт поведения и языка специфицированы IEEE Std 1003.1, а также во включающим его ''''''SUSv4''''''.
+
+- Основы языка
+
+Приблизительно ''sed'' выполняет следующие действия:
+
+ foreach входной-файл
+  while читать-строку-в-буфер-шаблона
+   foreach шаблон
+    if строка-совпала-c-шаблоном-в-буфере
+     выполнить-команды ...
+
+Из них пользователем программируются только шаблоны и команды; таким образом ''sed'' берёт на себя часть «грязной» работы, связанной с чтением файлов и других рутинных действий.
 
 Так как ''sed'' — потоковый редактор, он выполняет действия со строками текста. Операции ''sed'' ориентированы на построчную обработку потока текста, поступающего на стандартный ввод или из файлов.
 
@@ -14,7 +30,22 @@
 
 По умолчанию ''sed'' печатает все строки, поступающие на стандартный ввод. Это поведение отключается опцией '''-n'''. Выходные строки ''sed'' печатает на стандартный вывод и может быть использован как часть конвеера оболочки. Это распространённый практический приём — использование ''sed'' в качестве фильтра.
 
--- Шаблоны
+-- Использование в скриптах
+
+Если потоковый редактор ''sed'' используют в скриптах, то для повышения читаемости его команд их разделяют построчно. Каждую команду помещают на отдельную строку, в таком случае символ разделителя команд «;» не используется. Например, такой сценарий оболочки, использующий ''sed'', печатает только непустые строки из списка файлов или стандартного ввода (если список файлов пуст), заменяя в конце строки последовательность CR-LF (``'\r\n'``) на LF (``'\n'``):
+
+ #!/bin/sh
+ sed -n '
+ /./ {
+   s/\r$//
+   p
+ }' "$@"
+
+Такой же пример записанный компактно в одну строку выглядит так:
+
+ $ sed -n '/./{s/\r$//;p}' /etc/passwd /etc/group
+
+- Шаблоны
 
 Все команды языка оперируют в контексте шаблона, который соотносится с входной строкой. Шаблон может отсутствовать вообще, такой пустой шаблон действует на любую строку. Не пустой шаблон может быть регулярным выражением, номером строки или диапазоном.
 
@@ -60,11 +91,11 @@
  telnetd:x:116:128::/nonexistent:/bin/false 
  $
 
--- Буфер шаблона
+- Буфер шаблона
 
 Подчеркнём, что ''sed'' -- строчно-ориентированный язык. Строка, совпавшая с шаблоном, помещается в буфер шаблона. Большинство команд воздействуют на содержимое буфера шаблона, который по сути своей является переменной типа «строка».
 
--- Команды редактирования
+- Команды редактирования
 
 Строка, совпавшая с шаблоном, помещается в буфер шаблона. Предыдущее значение буфера затирается.
 Со строкой в буфере шаблона выполняются различные действия редактирования: удаление (d), дополнение (a), вставка (i), замена (c). В буфер шаблона может быть считана следующая строка (n) с удалением предыдущего значения или с приписыванием к нему (N) с символом переноса строки ('\n') в качестве разделителя.
@@ -78,7 +109,7 @@
  Over the hellish crevasse flapped.
  $
 
---- Удаление
+-- Удаление
 
 Для удаления строки или диапазона строк задают шаблон, предшествующий команде удаления.
 
@@ -87,7 +118,7 @@
  Over the hellish crevasse flapped.
  $
 
---- Дополнение
+-- Дополнение
 
 Команда дополнения дописывает строку после совпавших с шаблоном строк.
 
@@ -99,7 +130,7 @@
  The spirit of qualm and negation
  $
 
---- Вставка
+-- Вставка
 
 Команда вставки приписывает строку до совпавших с шаблоном строк.
 
@@ -111,7 +142,7 @@
  The spirit of qualm and negation
  $
 
---- Замена
+-- Замена
 
 Команда замены заменяет строки, совпавшие с шаблоном, на строку пользователя.
 
@@ -122,9 +153,9 @@
  The spirit of qualm and negation
  $
 
---- Многострочные дополнение, вставка и замена
+-- Многострочные дополнение, вставка и замена
 
-Команды дополнения, вставки и замены могут дополнять, вставлять и заменять строку, совпавшую с шаблоном, несколькими строками. При вводе многострочных значений конец ввода определяется по символу перевода строки (`'\n'`), а предыдущие строки оканчивают знаком «\».
+Команды дополнения, вставки и замены могут дополнять, вставлять и заменять строку, совпавшую с шаблоном, несколькими строками. При вводе многострочных значений конец ввода определяется по символу перевода строки (``'\n'``), а предыдущие строки оканчивают знаком «\».
 
  # '''sed '4aThe spirit of qualm and negation\'''
  '''Looked at another one – of good,'''
@@ -137,10 +168,10 @@
  Looked at another one – of good,
  $
 
--- Команда подстановки
+- Команда подстановки
 
 Наиболее употребительна команда подстановки (s), которая также действует с буфером шаблона.
-Действие команды подстановки изменяется дополнительными флагами. Например, действие подстановки можно повторить нерекурсивно ко всей строке множество раз (g), при подстановке выводить строку, если регулярное выражение подстановки дало совпадение (p). В команде подстановки по умолчанию используются POSIX базовые регулярные выражения (Basic Regular Expressions), как и во множестве прочих утилит Unix. Некоторые реализации 'sed' позволяют применять расширенные регулярные выражения (Extended Regular Expressions) POSIX, например, для GNU sed достаточно включить опцию '''-r'''.
+Действие команды подстановки изменяется дополнительными флагами. Например, действие подстановки можно повторить нерекурсивно ко всей строке множество раз (g), при подстановке выводить строку, если регулярное выражение подстановки дало совпадение (p). В команде подстановки по умолчанию используются POSIX базовые регулярные выражения (Basic Regular Expressions), как и во множестве прочих утилит Unix. Некоторые реализации ''sed'' позволяют применять расширенные регулярные выражения (Extended Regular Expressions) POSIX, например, для GNU sed достаточно включить опцию '''-r'''.
 
  ''Использование sed вместо grep.''
  $ '''sed -n '/^mysql/p' /etc/passwd'''
@@ -150,17 +181,17 @@
  nosql:x:113:121:''''''NoSQL'''''' Server,,,:/nonexistent:/bin/false
  $
 
-Для предыдущего примера стоит дать пояснение, так как в нём задействованы управляющие конструкции. В команде, которая производит замену подстрок, используется шаблон. К строке, совпавшей с шаблоном, применяется три команды, сгруппированные в фигурных скобках (`{`…`}`). Каждая команда отделяется от предыдущей знаком «;».
+Для предыдущего примера стоит дать пояснение, так как в нём задействованы управляющие конструкции. В команде, которая производит замену подстрок, используется шаблон. К строке, совпавшей с шаблоном, применяется три команды, сгруппированные в фигурных скобках (``{``…``}``). Каждая команда отделяется от предыдущей знаком «;».
 
--- Управляющие конструкции
+- Управляющие конструкции
 
-Команды группируются для применения к одному шаблону в фигурных скобках (`{`…`}`).
+Команды группируются для применения к одному шаблону в фигурных скобках (``{``…``}``).
 Команды, следующие друг за другом при группировке разделяются точкой с запятой (;).
 Если после шаблона поместить восклицательный знак (!), то следующие команды будут применены к не совпавшим с ним строкам. Это знак инверсии шаблона.
 
 -- Чтение строк
 
-В буфер шаблона может быть считана следующая строка текста (n) или добавлена к существующей (N); в последнем случае строки разделяются символом новой строки (`'\n'`).
+В буфер шаблона может быть считана следующая строка текста (n) или добавлена к существующей (N); в последнем случае строки разделяются символом новой строки (``'\n'``).
 
  ''В буфер шаблона помещается строка следующая после совпавшей с шаблоном.''
  $ '''sed -n '/^root:/{n;p}' /etc/passwd'''
@@ -173,18 +204,21 @@
  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
  $
 
--- Буфер удержания
+- Буфер удержания
 
 Буфер шаблона можно сохранить в буфере удержания. Для этого имеется четыре команды: копировать в буфер удержания с затиранием (h) и без затирания с приписыванием через символ новой строки (H), поместить содержимое буфера удержания в буфер шаблона с затиранием (g) и без затирания (G).
 Ещё одна команда позволяет обменять значения буферов удержания и шаблона (x).
 
 -- Метки и переходы
 
-Язык sed позволяет организовывать циклы.
-Для этого в нём имеются команды установки метки (:<label>), безусловного перехода на метку (b<label>), и условного перехода (t<label>). Последняя проверяет флаг, устанавливающийся при любых успешных подстановках для текущей входной строки; если таковые имели место, то выполняется переход на метку. Флаг сбрасывается при чтении следующей строки или при выполнении команды условного перехода (t).
+Язык ''sed'' позволяет организовывать циклы.
+Для этого в нём имеются команды установки метки (:<''label''>), безусловного перехода на метку (b<''label''>), и условного перехода (t<''label''>). Последняя проверяет флаг, устанавливающийся при любых успешных подстановках для текущей входной строки; если таковые имели место, то выполняется переход на метку. Флаг сбрасывается при чтении следующей строки или при выполнении команды условного перехода (t).
 
--- Литература
+- Литература
 
-	1 McMahon L. E. SED: a Non-interactive Text Editor. – Bell Telephone Laboratories, 1979.
+	1 ''''''McMahon'''''', L. E. SED: a Non-interactive Text Editor / L. E. ''''''McMahon''''''. — Bell Telephone Laboratories, 1979.
+	1 Dougherty, D. UNIX text processing / Dale Dougherty, Tim O'Reilly. — Hayden Books, 1987. — Vol. 25943. — URL: http://www.oreilly.com/openbook/utp/.
+	1 Peek, J. Unix Power Tools / Jerry Peek, Shelley Powers, Tim O'Reilly, Mike Loukides. — 3rd ed. — O'Reilly Media, October 2002.
+	1 The Open Group Base Specifications Issue 7 [[Электронный ресурс]] : sed - stream editor / The IEEE and The Open Group. — IEEE Std 1003.1, 2013 Edition. — 2013. — Режим доступа: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html, свободный.
 
 # КатегорияЯзыкиПрограммирования