Em sed
, um caractere de nova linha precisa ser escapado no lado direito do comando s
, então você precisa escrevê-lo:
sed 's/foo/1\
2\
3/g'
Algumas implementações sed
também suportam o (não padrão):
sed 's/foo/1\n2\n3/g'
Se $bar
for a substituição, você precisará primeiro inserir uma barra invertida antes de cada caractere de nova linha. Enquanto você está nisso, você também deve inserir uma barra invertida antes de cada barra, barra invertida e caractere de e comercial.
Algo como:
bar_escaped=$(printf '%s\n' "$bar" | sed 's,[\/&],\&,g;s/$/\/')
bar_escaped=${bar_escaped%?}
sed "s/foo/$bar_escaped/g"