Duplicar linha de arquivo

1. Duplicar linha de arquivo

Rodrigo Zuber de Oliveira
zuberrzzo

(usa Debian)

Enviado em 08/04/2014 - 08:55h

Bom dia Pessoal, tenhu um problema e não consigo resolver pois não domínio bem a parte de scripts/comandos de manipulação de arquivos.

Tenho um arquivo e preciso copiar o conteúdo após o atributo sn: "computer1" para uma linha abaixo dele alterando sn: para uid: e adicionando o conteúdo copiado.

exemplo:

sn: computer1 (copiado computer1)
uid: computer1 (adicionado nesta linha de baixo uid: e o conteúdo copiado)


Obs: O arquivo possui 1400 registros com sn:


# computer1$, ou=maquinas,dc=empresa,dc=com
dn: uid=computer1$,ou=maquinas,dc=empresa,dc=com
sn: computer1$
cn: computer1$
uidNumber: 9589
gidNumber: 515
homeDirectory: /dev/null
gecos: Computer
sambaPrimaryGroupSID: S-1-5-21-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
sambaAcctFlags: [W ]
objectClass: posixAccount
#objectClass: account
objectClass: top
objectClass: sambaSamAccount
objectClass: inetOrgPerson
sambaPwdCanChange: 1381494514
sambaPwdMustChange: 2147483647
sambaSID: S-1-5-21-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
sambaNTPassword: 12345678
sambaPwdLastSet: 12345678

# computer2$, ou=maquinas,dc=empresa,dc=com
dn: uid=computer2$,ou=maquinas,dc=empresa,dc=com
sn: computer2$
cn: computer2$
uidNumber: 9590
gidNumber: 515
homeDirectory: /dev/null
gecos: Computer
sambaPrimaryGroupSID: S-1-5-21-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
sambaAcctFlags: [W ]
objectClass: posixAccount
#objectClass: account
objectClass: top
objectClass: sambaSamAccount
objectClass: inetOrgPerson
sambaPwdCanChange: 1381499913
sambaPwdMustChange: 2147483647
sambaSID: S-1-5-21-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
sambaNTPassword: 12345678
sambaPwdLastSet: 12345678



Agradeço desde já a ajuda


  


2. Re: Duplicar linha de arquivo

rafael silveira gomes
rsilveiragomes

(usa Debian)

Enviado em 21/04/2014 - 15:18h

zuberrzzo>>> eu não sou expert no assunto não.. mas derrepente o que eu consegui fazer aqui te ajude a ter uma idéia do que você deve fazer.. acompanha aqui:

Usei o grep para pegar todas linhas que tiverem a expressão 'sn: qualquerCoisa', direcionei a saída do grep para o tee, o tee grava oque ele recebeu num arquivo ao mesmo tempo que ele joga para a saída padrão.. daí eu pego essa saída do tee e direciono pro sed, que substitui tudo que tiver 'sn:' por 'uid:' e joga essa saída para o final do arquivo.

grep 'sn: *' teste | tee -a arquivo | sed 's/sn:/uid:/' >> arquivo


** detalhe, ele não ficou ordenado.. eu tentei concatenar isso com xargs que ao meu ver, faria funcionar corretamente..
mas não consegui não.. a idéia seria essa:

grep 'sn: *' teste | tee -a arquivo | xargs sed 's/sn:/uid:/' >> arquivo

porém o xargs está jogando a saída do tee para a entrada do sed.. você precisa que ele jogue a saída do tee para a substituição do sed.. derrepente algum dos gurus do vol ajuda aki xD

Acho que pelo menos meu raciocínio ta correto.. se eu conseguir algo melhor te falo aqui x)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts