Grep dentro {}

1

Eu tenho uma configuração de texto bruto de um balanceador de carga e quero grep apenas para os servidores virtuais que possuem um perfil TCP aplicado. Uma configuração de amostra está abaixo, e a partir disso eu gostaria apenas de produzir a primeira linha (eu posso usar awk mais tarde para filtrar apenas o nome do VS, se necessário). Note que estou fazendo isso off-line, sem acesso ao dispositivo.

ltm virtual /Common/custom_ldap-vs {
    destination /Common/10.1.1.2:389
    ip-protocol tcp
    mask 255.255.255.255
    persist {
        /Common/source_addr {
            default yes
        }
    }
    pool /Common/dev_itim_rhitimdevtds_ldap-pool
    profiles {
       <b> /Common/Custom_tcp_Profile { } </b>
    }
    source 0.0.0.0/0
    source-address-translation {
        type automap
    }
    translate-address enabled
    translate-port enabled
    vlans {
        /Common/vlan_3
    }
    vlans-enabled
}
    
por kruczkowski 06.04.2017 / 18:05

1 resposta

1

Tente primeiro retirar as novas linhas do arquivo. Em seguida, divida cada servidor virtual em sua própria linha. Então você pode grep para sua string de perfil:

perl -pe 's/\n//mg' yourfile.txt | perl -pe 's/ltm virtual/\n/g' | grep Custom_tcp_Profile | perl -pe 's/(.*?){.*/$1/'
    
por 06.04.2017 / 19:17

Tags