동일한 그룹에 설정된 각 네트워크를 별도로 인쇄

동일한 그룹에 설정된 각 네트워크를 별도로 인쇄

현재 내 csv input모습은 다음과 같습니다.

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

다음과 같은 출력을 원합니다. (각 네트워크 세트에 대해 연관된 네트워크 이름을 표시하고 싶습니다)

Data_NetworkSet_A
 P1MSVmgmtvM
 P1MSVvMotion
Data_NetworkSet_B
 P2MSVmgmtvM
 P2MSVvMotion
Edge_NetworkSet_A
 E1MSVEDGEiDMZRUE1
 E1MSVEDGEiEXPRUE1

답변1

당신이 사용할 수있는 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

in seen[$2]=seen[$2]"\n "$1;; 은 동일한 두 번째 열과 첫 번째 열 값이 있을 때 ewline-space를 인쇄하고 \n동일한 키 인덱스에 추가하고 결과를 동일한 키 값에 저장하는 것을 의미합니다.$1seen[$2]=...=seen[$2]...

이것END성명,이 블록은 모든 레코드/행을 읽을 때 최종적으로 실행되며 for 루프를 사용하여 명명된 항목을 반복합니다.키를 먼저 인쇄한 다음 키 값을 인쇄합니다.

관련 정보