Substituindo textos no Linux

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?

Deixe uma resposta