Buenas galera!
Certamente você, um renomado e comprometido administrador de sistemas, já se deparou com a necessidade
de alterar várias informações dentro de um arquivo de configuração.
Bem, para facilitar a sua vida, vou mostrar dois comandos mágicos que podem te ajudar em momentos te tensão
ou de ira ( contra seu adorável chefe que pediu para você alterar todos os ip de um arquivo, por ex ).
sed
Esse comando mágico substitui expressões regulares por outras informações. Usaremos este comando para mostrar como alterar um arquivo de configuração:
Imaginemos nosso arquivo /etc/hosts
## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost 10.0.0.1 gateway 10.0.0.2 dns 10.0.0.3 server1 10.0.0.4 mp3server 10.0.0.5 servidor_CS # :)
Agora imagine que seu amável chefe ou responsável de redes diga para você:
“Precisamos alterar todos os ips para a rede 10.0.10.X , temos que abrir mais uma classe na rede!”
E agora meu jovem?
[ root@localhost: /etc ] sed -i.bkp 's/10\.0\.0/10.0.10/g' hosts [ root@localhost: /etc ] more hosts ## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost 10.0.10.1 gateway 10.0.10.2 dns 10.0.10.3 server1 10.0.10.4 mp3server 10.0.10.5 servidor_CS # :)
Ahá!
Bem, agora vamos explicar o que fizemos no comando sed:
-i.bkp: esta opção informa que o arquivo alterado deverá ter uma cópia inalterada e o sufixo desta cópia será .bkp;
‘s/10\.0\.0/10.0.10/g’: nesta string informamos que a origem 10\.0\.0 deverá ser substituida por 10.0.10;
* Observação: veja que as sentenças são separadas por um / e que os pontos (.) são precedidos de \ pois se trata de uma regex.
tr
Vulgarmente chamado de TRadutor, este comando substitui uma regex por um conteúdo.
Vejamos um exemplo muito simples:
[ root@localhost: /etc ] echo "kakakakka" | tr 'k' 'L' LaLaLaLLa
No comando acima, informamos que o texto deveria ter os k substituídos por L.
Simples, não?