Como extrair linhas do arquivo de origem com o arquivo de referência, adicionar ao arquivo de resultado?

1

Eu tenho a fonte simplificada & arquivos de referência.

arquivo de origem, s.txt :

dn: cn=user1, cn=users,dc=domain
changetype: modify
replace: userpassword
userpassword: {SSHA}$%^&

dn: cn=user2, cn=users,dc=domain
changetype: modify
replace: userpassword
userpassword: {SSHA}$%^&dffd

dn: cn=user3, cn=users,dc=domain
changetype: modify
replace: userpassword
userpassword: {SSHA}$%^&dfd32

arquivo de referência, r.txt :

dn: cn=user2, cn=users,dc=domain

Eu quero um script para usar o arquivo dn de registro de referência para extrair a linha user2'dn do arquivo de origem e 3 linhas depois, adicionar a um arquivo de resultado user_chg.ldif .

user_chg.ldif :

dn: cn=user2, cn=users,dc=domain
changetype: modify
replace: userpassword
userpassword: {SSHA}$%^&dffd
    
por SeanB 11.08.2018 / 16:26

3 respostas

0

Use

while read LINE; do
  sed -n -e "/^$LINE\$/,/^$/p" s.txt
done < r.txt
    
por 11.08.2018 / 16:46
1

Que tal (se a sua versão grep permitir a opção -A ):

grep -A3 -f r.txt s.txt
    
por 11.08.2018 / 17:44
0

Obrigado pela resposta de RalfFriedl para minha pergunta. Eu tenho uma pequena pergunta diferente e não consigo descobrir. arquivo de origem s.txt:

dn: cn = task, cn = Grupos, dc = domínio changetype: modificar adicionar: uniquemember uniquemember: cn = user1, cn = usuários, dc = domínio

dn: cn = task, cn = Grupos, dc = domínio changetype: modificar adicionar: uniquemember uniquemember: cn = user9, cn = usuários, dc = domínio

dn: cn = task, cn = Grupos, dc = domínio changetype: modificar adicionar: uniquemember uniquemember: cn = user10, cn = usuários, dc = domínio

arquivo de referência r.txt: uniquemember: cn = user9, cn = usuários, dc = domain uniquemember: cn = user8, cn = usuários, dc = domínio

Eu quero um script para usar o arquivo uniquemember do registro de referência para extrair a linha do usuário9 do arquivo de origem e as 3 linhas acima, adicionar ao arquivo de resultado usermember_add.ldif.

dn: cn = task, cn = Grupos, dc = domínio changetype: modificar adicionar: uniquemember uniquemember: cn = user9, cn = usuários, dc = domínio

    
por 26.08.2018 / 03:24