É possível passar argumentos para um script sed?

4

Considere um script sed simples foo-to-bar.sed :

s/foo/bar/

e a invocação simples:

sed -f foo-to-bar.sed some-file.txt

Agora, digamos que eu queira personalizar a string de substituição (barra, neste caso) e passá-la como um argumento para o script sed. Isso é possível?

NOTA: Estou ciente de que posso me livrar do script sed e usar as variáveis de shell inline. Estou interessado especificamente em passar argumentos para o script sed. Não encontrei nada na documentação, mas ainda espero que esteja faltando alguma coisa.

    
por Bogdan Calmac 27.05.2015 / 20:25

1 resposta

2

Como parece que realmente não há como passar argumentos, a melhor solução possível é usar um espaço reservado intermediário que é substituído na linha de comando. foo-to-bar.sed :

s/foo/#ARG1#/

Invocação:

sed -f foo-to-bar.sed -e "s/#ARG1#/bar/g" some-file.txt

Explicação: foo é primeiro substituído por #ARG1# e, em seguida, com bar passado da linha de comando. Observe que é importante ter o -e após -f . Também não há nada especial sobre o delimitador # , use qualquer coisa que normalmente não apareceria no arquivo.

    
por 27.05.2015 / 20:48

Tags