Eu tenho o seguinte arquivo: procurar por "LC" (segundo padrão de pesquisa) dá mais que uma saída de linha, eu preciso processá-lo para fornecer um por linha repetindo o primeiro padrão de pesquisa adjacente a ele.
Schedule Name: Today
Schedule Type: Standard
Active: yes
Effective date: 01/24/2014 11:17:05
Client Encrypt: no
LC/CY/Custmr: EU NY Cindy
BU CA Victor
GU MI Bob
Include:
Schedule Name: Tomorrow
Schedule Type: Standard
Active: yes
Effective date: 01/26/2014 11:17:05
Client Encrypt: no
LC/CY/Custmr: MU LA Martha
EU CA Sam
Include:
Schedule Name: Yesterday
Schedule Type: Standard
Active: no
Effective date: 01/21/2014 11:17:05
Client Encrypt: no
LC/CY/Custmr: NV IL Joe
Include:
Saída desejada
Cindy Today
Victor Today
Bob Today
Martha Tomorrow
Sam Tomorrow
Agora, quero receber Schedule Name
, ou seja, hoje, amanhã, junto com Customer name
, que é o quarto campo se Active
for yes
. Então a saída deve ser:
cat billing |
awk '/Schedule Name/ || /Active:/ || /Loc/,/^$/' |
grep -v '^$'
Uma linha em branco é depois de Loc antes de Incluir, Então eu estou tentando obter todos os dados até encontrar uma linha em branco e depois grep -v linha em branco, Ele funciona bem se eu tentar sem despertar Nome agendado e ativo, mas não • trabalhe junto com essas duas pesquisas de patter.
Estou usando o código abaixo, que é bem lento.
for pol in 'cat /tmp/Active_Policies'
do
count='sudo /usr/openv/netbackup/bin/admincmd/bppllist $pol -U | awk '/HW\/OS\/Client:/,/Include:/' | grep -v "Include:" | wc -l'
if [ $count -gt 0 ]
then
first='sudo /usr/openv/netbackup/bin/admincmd/bppllist $pol -U | awk '/HW\/OS\/Client:/,/Include:/' | grep -v "Include:" | awk '{print $4}' | head -1'
echo "$first $pol" >> /tmp/Clients_Policies_$(date +%m-%d-%Y)
counter=1
for client in 'sudo /usr/openv/netbackup/bin/admincmd/bppllist $pol -U | awk '/HW\/OS\/Client:/,/Include:/' | grep -v "Include:" | awk '{print $3}' | sed '1d;$d''
do
((counter = counter + 1))
if [ $counter -le $count ]
then
echo "$client $pol" >> /tmp/Clients_Policies_$(date +%m-%d-%Y)
fi
done
fi
done