imprimir cada rede definida em separado mesmo grupo

0

Atualmente, meu csv input é semelhante ao seguinte:

network_name,network_set
P1MSVmgmtvM,Data_NetworkSet_A
P1MSVvMotion,Data_NetworkSet_A
P2MSVmgmtvM,Data_NetworkSet_B
P2MSVvMotion,Data_NetworkSet_B
E1MSVEDGEiDMZRUE1,Edge_NetworkSet_A
E1MSVEDGEiEXPRUE1,Edge_NetworkSet_A

Eu quero a saída como abaixo: (para cada conjunto de rede, quero exibir seu nome de rede associado)

Data_NetworkSet_A
 P1MSVmgmtvM
 P1MSVvMotion
Data_NetworkSet_B
 P2MSVmgmtvM
 P2MSVvMotion
Edge_NetworkSet_A
 E1MSVEDGEiDMZRUE1
 E1MSVEDGEiEXPRUE1
    
por Prajith P 14.04.2018 / 13:29

1 resposta

0

Você pode usar awk :

$ awk -F, 'NR>1{seen[$2]=seen[$2]"\n "$1;} END{for(x in seen) print x, seen[x]}' infile
Data_NetworkSet_A
 P1MSVmgmtvM
 P1MSVvMotion
Data_NetworkSet_B
 P2MSVmgmtvM
 P2MSVvMotion
Edge_NetworkSet_A
 E1MSVEDGEiDMZRUE1
 E1MSVEDGEiEXPRUE1

Em seen[$2]=seen[$2]"\n "$1; ; significa print a \n ewline-space, seguido pelo primeiro valor da coluna $1 quando tiver a mesma segunda coluna seen[$2]=... e anexar no mesmo índice de chave =seen[$2]... e salvar o resultado no mesmo valor da chave.

A % declaração deEND , awk executando este bloco no final quando todos os registros / linha são lidos, e usamos um loop for para iterar sobre o array chamado visto e imprimir a chave primeiro e o valor da chave em a seguir.

    
por 14.04.2018 / 14:31