O sed é um editor de fluxo de dados (stream editor) utilizado para fazer transformações em um texto/input de dados. Para saber utilizar o sed você deve entender de expressões regulares (regexp).
Quer ver um exemplo? O comando abaixo stat -c é utilizado para mostrar o usuário e grupo ao qual pertence um determinado diretório. Neste exemplo o diretório www pertence ao usuário www-data e ao grupo www-data:
stat -c "%U %G" /var/www/
www-data www-data
Recentemente desenvolvi um script onde eu precisava destas duas informações, porém elas precisavam estar separadas por dois pontos e não por um espaço (que é o output padrão). Ou seja, eu queria que a saída do comando stat -c fosse assim:
www-data:www-data
Como eu consegui substituir o espaço por dois pontos? Usando sed!
stat -c "%U %G" /var/www/$site | sed "s/\ /:/g"
Em sed, o comando s/ diz para substituir uma palavra/texto/caractere por outra(o), ou seja, neste caso eu disse para substituir o espaço por dois pontos. O comando g é utilizado para fazer a substituição em todos os resultados encontrados, e não apenas no primeiro. Em teoria demos o seguinte:
sed "s/valor_a_substituir/novo_valor/g"
Outra forma muito comum de se utilizar o sed é quando você tem um arquivo de configuração padrão e quer trocar apenas o nome do projeto dentro deste arquivo:
sed -i ‘s/gato/cachorro/g’ exemplo.conf
Neste exemplo o sed vai substituir todo gato que aparecer dentro do arquivo exemplo.conf por cachorro! A opção -i te permite modificar arquivos protegidos.
Existe uma infinidade de utilizações possíveis para o comando sed e está fora do escopo deste post explorar todas as alternativas. Caso você queira aprofundar um pouco mais os seus conhecimentos aqui está o manual do sed.
Comentários