É a substituição de comandos que consome as novas linhas:
a=$( printf 'hello\nworld\n\n\n\n\n\n' )
printf 'a is "%s"\n' "$a"
Saída:
a is "hello
world"
Usando sed
para resolver o problema original:
sed '/Pattern/i\
Text I want to insert with one leading and two trailing new lines\
\
' file
Ou com o GNU sed
:
sed '/Pattern/i Text I want to insert with one leading and two trailing new lines\n\n' file
Aqui, usamos o comando i
("insert") em sed
para inserir um determinado conjunto de linhas antes de qualquer linha correspondente a Pattern
. Ao escapar das duas novas linhas (na primeira variação sed
), podemos inseri-las no texto. A nova linha principal no resultado é a mesma que estava precedendo Pattern
desde o início.
Para os dados de exemplo, isso gera
Stuff
Text I want to insert with one leading and two trailing new lines
Pattern
Stuff
Isso tem o benefício de que nenhum dos espaços em branco existentes seja modificado.