SED - Como adicionar uma linha após ou anterior a outra e resolvendo o problema da /

Ainda abordando a alteração de arquivos de configuração utilizando como exemplo um arquivo com o seguinte conteúdo:

Position=3
Size=4
SizePercentage=100
Name=BigLinux

Quando o texto a ser modificado possui o caractere / é necessário adicionar uma contra barra para que ela não seja identificada como o fim de uma operação, então fica assim \/, porém não é pratico quando são muitas barras ou quando se usa uma variável que é um endereço, como /home/biglinux

Nesses casos utilizamos outro caractere, é possível utilizar qualquer caractere ASCII, eu escolhi o | por ser muito raro de ser usado.

No exemplo a seguir irá adicionar a linha Idade=99 em baixo da linha iniciada com Name=

sed '\|^Name=|{p;s|.*|Idade=99|;}' /etc/biglinux

Note que antes do primeiro | existe uma \ mas após ele basta incluir o | no lugar do que antes era a /

Agora o mesmo exemplo, porém a linha irá ficar em cima da linha começada com Name:

sed '\|^Name=|{h;s|.*|Idade=99|;p;x}' /etc/biglinux

0 comentários: