Não, mas o seu script será portátil, desde que você escape de qualquer espaço em branco. Por quê ? Porque alguns sed
s retiram caracteres em branco das linhas de texto e a única maneira de evitar isso é escapar do espaço em branco à esquerda, como explicam as páginas de manual do século passado: 1 , 2 , 3
O mesmo vale para BSD
sed
( OSX
acabou de copiar o código, não é sua extensão) e se você verificar os arquivos e ler o man
page de BSD 2.11
é bastante claro:
(1)i\
text
.......
An argument denoted text consists of one or more lines, all but the last of which end with'\'
to hide the newline. Backslashes in text are treated like backslashes in the replacement string of an's'
command, and may be used to protect initial blanks and tabs against the stripping that is done on every script line.
Agora, onde isso é documentado na especificação POSIX? Apenas diz
The argument text shall consist of one or more lines. Each embedded <newline> in the text shall be preceded by a <backslash>. Other <backslash> characters in text shall be removed, and the following character shall be treated literally.
e se você rolar para baixo em RATIONALE , ele diz
The requirements for acceptance of <blank> and <space> characters in command lines has been made more explicit than in early proposals to describe clearly the historical practice and to remove confusion about the phrase "protect initial blanks [sic] and tabs from the stripping that is done on every script line" that appears in much of the historical documentation of the sed utility description of text. (Not all implementations are known to have stripped <blank> characters from text lines, although they all have allowed leading <blank> characters preceding the address on a command line.)
Como a parte com "barras invertidas pode ser usada para" não foi incluída nessa citação, a frase restante "protege os espaços em branco iniciais ..." não faz qualquer sentido ... 1
De qualquer forma, para resumir: algumas implementações (e algumas ainda fazem) tiram espaços em branco das linhas de texto. No entanto, uma vez que a especificação POSIX a qual todas as implementações devem obedecer diz
Other <backslash> characters in text shall be removed, and the following character shall be treated literally.
podemos concluir que a maneira portátil de recuar as linhas no texto a ser inserido é escapar da lacuna inicial em cada uma dessas linhas.
1: Eu também não entendo porque OSX
/ BSD
pessoas mudaram o parágrafo inteiro na página man
sem alterar o código fonte - você tem o mesmo comportamento de antes, mas o homem seção que documenta este material não está mais lá.