Use grep, sed ou awk para extrair linhas de arquivos?

-1

Eu quero migrar da autenticação OpenLDAP para outros métodos de autenticação. Meu principal problema é os sudoers, onde preciso migrá-los manualmente.

Assim, preciso criar um script para isso. Eu gostaria de usar o bash para isso. O arquivo ldif contém linhas como as seguintes:

dn: cn=Devs, ou=SUDOers, dc=example,dc=com
sudoUser: %devs
sudoCommand: /bin/su - command
sudoCommand: /bin/su - wwwadmin
sudoHost: ALL
description: Developer Admin
objectClass: sudoRole
cn: Devs

Então, o que eu preciso fazer é:

  1. Leia o arquivo LDIF.
  2. Extraia todas as linhas entre dn: e uma linha em branco, OU, entre as linhas que contêm cn: Devs

Eu gostaria de usar comandos BASH incorporados, grep, awk, sed etc somente.

Sem Python, PHP, Perl, etc.

    
por Peter 13.02.2017 / 12:13

1 resposta

2

OK, achei uma maneira fácil de usar o sed:

sed -n '/start_search/,/end_search/p' filename)
  • start_search é o padrão da primeira linha
  • end_search é o padrão da última linha.

No meu caso, start_search é 'dn: cn =' e o end_search é '^ cn:' ou '^ $'

    
por 13.02.2017 / 15:49