Você quase teve isso com:
sed -i '/Hello/{/World/a} appendstring' file
Você precisa separar seus argumentos. Use -e
, assim:
sed -i -e '/Hello/{/World/a appendstring' -e '}' file
Note que usar o comando a ppend sem uma nova linha é uma extensão GNU, assim como a opção -i
.
Para fazer isso de forma mais portável e considerando também a possibilidade de várias strings corresponderem, tente:
sed '/multiple/{/words/{/to/{/match/ s/$/append this/;};};}' file > newfile
mv newfile file
Como você já está usando o GNU Sed, use:
sed -i -e '/multiple/{/words/{/to/{/match/ a append this' -e 'a and also this' -e 'a oh and this too' -e '};};}' file