現在私の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
同じキーインデックスに追加し、結果を同じキー値に格納することを意味します。$1
seen[$2]=...
=seen[$2]...
これEND
氏名、アッこのブロックは、すべてのレコード/行を読み取ると最終的に実行され、forループを使用して名前付き項目を繰り返します。ボンキーを最初に印刷し、次にキー値を印刷します。