ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : Ответ является урезанной копией Почему эти фигурные скобки необходимы в sed?
В соответствии со стандартом POSIX страница на sed
:
Сценарий должен состоять из команд редактирования следующей формы:
[<i>address</i>[,<i>address</i>]]<i>function</i>
где function
представляет односимвольный командный глагол из списка в Редактирование команд в sed , за которым следуют все применимые аргументы.
Таким образом, первый непустой символ после адреса беретсякак командный глагол.
На фигурные скобки ссылаются далее:
[<i>2addr</i>] {<i>editing command</i>
<i>editing command</i>
...
}
[ 2addr ] - это показатель того, что максимальное количество допустимых адресов равно двум.
Чтобы пояснить пункт, изложенный выше, секция Адреса sed(1)
говорит:
Sed
команды могут быть заданы без адресов, и в этом случае команда будет выполненадля всех строк ввода;с одним адресом, в этом случае команда будет выполняться только для строк ввода, соответствующих этому адресу;или с двумя адресами, и в этом случае команда будет выполняться для всех входных строк, которые соответствуют включенному диапазону строк, начиная с первого адреса и продолжаясь до второго адреса.Об адресных диапазонах следует помнить три вещи: синтаксис: addr1 , addr2 (т. Е. Адреса разделяются запятой);
… (и другие вещи неотносящиеся к этому обсуждению) …
Информационная страница GNU (info sed
) имеет аналогичное описание {
и }
в разделе «3.4 Часто»-Используемые команды ":
{ <i>COMMANDS</i> }
В противном случае фигурные скобки используются для применения нескольких команд по одному и тому же адресу илидля вложения адресов.
Стандарт здесь не очень явный 1 , но левая скобка {
на самом деле команда, которая запускает группу других команд sed (группузаканчивается правой скобкой }
).
1:
, хотя, если вы прочитали всю страницу, упоминается, что:
Командные глаголы, отличные от {, a , b , c , i , r , t , w , : и # могут сопровождаться ...