同じグループに設定されている各ネットワークを別々に印刷

同じグループに設定されている各ネットワークを別々に印刷

現在私の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;;は、同じ2番目の列と最初の列の値があるときにewline-spaceを印刷し、\n同じキーインデックスに追加し、結果を同じキー値に格納することを意味します。$1seen[$2]=...=seen[$2]...

これEND氏名アッこのブロックは、すべてのレコード/行を読み取ると最終的に実行され、forループを使用して名前付き項目を繰り返します。ボンキーを最初に印刷し、次にキー値を印刷します。

おすすめ記事