sed, parte V: Scripts em sed

parte I: O que é e para que serve
parte II: Enviando dados pro sed
parte III: Selecionando as linhas em que vamos trabalhar
parte IV: Substituindo
parte V: Scripts em sed
parte VI: Expressões Regulares
parte VII: Referenciando com &
parte VIII: Back Reference
parte IX: Hold Space ou Espaço Reserva
parte X: Por onde prosseguir e Considerações Finais
parte XI: Comandos de uma linha só




Caso use com frequência algum comando de sed, você pode salvá-lo na forma de script.
Por exemplo, salve frase.sed, com o seguinte conteúdo:
s/duende/gnomo/
s/javali/porco/

Para executar, siga esse padrão:
sed -f comandos_em.sed arquivo_em_que_se_vai_trabalhar.txt

No nosso caso:
sed -f frase.sed frase.txt

Note que, o sed interpreta cada linha como um comando, não sendo necessário estarem entre ''. 
Lembre-se que linha não é a linha visível. Você pode escrever 1000 linhas em um editor e estar na primeira linha ainda, embora, visualmente você veja várias.
Pra isso ficar bem claro, no vi/vim digite ':set nu' no modo comando.

Caso queira tornar seu script executável, adicione isso na primeira linha:
#! /bin/sed -f

Depois, dê permissão para executar:
chmod +x frase.sed

Pra executar:
./frase.sed frase.txt


- Comentando seus scripts

Uma boa prática em programação, são o uso de comentários.
Servem para explicar melhor uma passagem e não vão afetar a interpretação/compilação do código. É algo de desenvolvedor para desenvolvedor.

Em sed, assim como na maioria das linguagens de script, se utiliza '#' para fazer comentários.

Aqui, uma ressalva.
Caso os dois primeiros caracteres de seu script sejam: #n
O sed interpretará como a flag -n (não imprimir), anteriormente explicada.
Ou seja, tome cuidade caso este seja seu objetivo.

# Comentário ok
#Comentário ok
#Nesse caso, também
#nesse caso vai dar erro

- Inserindo e anexando

Uma maneira de editar seus arquivos é através do comando 'i' (insert, inserindo) e 'a' (append, anexando).

Vamos adicionar os números -1 e 0 ao início de nosso teste.txt e os números 7 e 8 ao final.
Para isso, crie o script teste.sed:
#! /bin/sed -f

1 i\
-1\
0

$ a\
7\
8


O número 1 representa a linha em que vamos inserir.
O $, em expressão regular, significa a última linha do arquivo.
Logo, inserimos -1 e 0 a partir da primeira linha e 7 e 8 a partir da última.

Nenhum comentário: