Substuir conteúdo - shell script

1. Substuir conteúdo - shell script

Daniel Vasconcelos
danielvasc

(usa Debian)

Enviado em 05/03/2014 - 11:29h

Olá pessoal,

Possuo um arquivo gigante, que em cada linha possui um registro que faz referência a um usuário. Este arquivo tem que ser modificado para se adequar aos padrões do novo servidor (método para migrar os usuários de uma plataforma webmin para o cpanel).

Bom, vejamos um exemplo (vou utilizar aqui 4 linhas apenas).

Arquivo de configuração do servidor antigo:

zanella:x:571:610:ZANELLA CORRETORA DE SEGUROS LTDA:/home/mensagem/zanella:/sbin/nologin
ernesto:x:572:610:ERNESTO TARCISIO BAGGIO:/home/mensagem/ernesto:/sbin/nologin
felipe:x:578:610:felipe zibell:/home/mensagem/felipe:/sbin/nologin
debora:x:579:610:Debora Nedel:/home/mensagem/debora:/sbin/nologin

Arquivo modificado e pronto para ser usado no servidor novo:

felipe:x:578:610:felipe zibell:/dominios/stche/mail/stcheturbo.com.br/felipe:/dominios/stche
debora:x:579:610:Debora Nedel:/dominios/stche/mail/stcheturbo.com.br/debora:/dominios/stche
nedel:x:581:610:Clovis Nedel:/dominios/stche/mail/stcheturbo.com.br/nedel:/dominios/stche
farias:x:611:610:Farias Dema:/dominios/stche/mail/stcheturbo.com.br/farias:/dominios/stche

Bom, possuo aproximadamente 8 mil linhas neste arquivo, com várias destas entradas. Como elas possuem um padrão, creio que seja então possível criar um script para automatizar este trabalho.

Se alguém puder me ajudar com um script útil, serei eternamente grato.



  


2. Re: Substuir conteúdo - shell script

Carlos Alberto Mazzer
cmazzer

(usa Ubuntu)

Enviado em 05/03/2014 - 14:09h

Boa tarde,

Neste caso tem padrão sim.

1 - troca tudo que é '/sbin/nologin' por '/dominios/stche'

Criei um arquivo teste com seu exemplo:
$ cat teste
zanella:x:571:610:ZANELLA CORRETORA DE SEGUROS LTDA:/home/mensagem/zanella:/sbin/nologin
ernesto:x:572:610:ERNESTO TARCISIO BAGGIO:/home/mensagem/ernesto:/sbin/nologin

Ai rodei o comando sed para substituir:
$ sed -e 's/\/sbin\/nologin/\/dominios\/stche/g' teste > teste2

$ cat teste2
zanella:x:571:610:ZANELLA CORRETORA DE SEGUROS LTDA:/home/mensagem/zanella:/dominios/stche
ernesto:x:572:610:ERNESTO TARCISIO BAGGIO:/home/mensagem/ernesto:/dominios/stche

2 - troca tudo que é '/home/mensagem' por '/dominios/stche/mail/stcheturbo.com.br'
$ sed -e 's/\/home\/mensagem/\/dominios\/stche\/mail\/stcheturbo.com.br/g' teste2 > teste3

$ cat teste3
zanella:x:571:610:ZANELLA CORRETORA DE SEGUROS LTDA:/dominios/stche/mail/stcheturbo.com.br/zanella:/dominios/stche
ernesto:x:572:610:ERNESTO TARCISIO BAGGIO:/dominios/stche/mail/stcheturbo.com.br/ernesto:/dominios/stche


Pronto. Com 2 comandos, você troca seus 8 mil registros.


3. Re: Substuir conteúdo - shell script

Carlos Alberto Mazzer
cmazzer

(usa Ubuntu)

Enviado em 05/03/2014 - 14:12h

Me deve uma coca (em garrafinha) :)


4. Re: Substuir conteúdo - shell script

Daniel Vasconcelos
danielvasc

(usa Debian)

Enviado em 05/03/2014 - 14:17h

Me passa teu endereço que lhe enviarei a coca-cola :D
Valeu mano!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts