HMCは各VIOサーバーとLPARのVLAN詳細を収集しています。これらのVLANをVSWITCHName=VLANID
カンマ区切りのVwsitchにグループ化する必要があります。ただし、一部のVIOサーバーには2つのVSWITCHESがあります。 forループを使用してデータを収集するので、1行にデータを表示したいと思います。
LAB1:~> lshwres -m system-01 -r virtualio --rsubtype eth --level lpar --filter lpar_names=ABC1234 -F vswitch:port_vlan_id:addl_vlan_ids
ETHERNET0:64:
ETHERNET0:2215:52,64
ETHERNET0:3969:701,702,2152,2154
ETHERNET0:4001:
LAB1:~> lshwres -m system-01 -r virtualio --rsubtype eth --level lpar --filter lpar_names=ABCD4567 -F vswitch:port_vlan_id:addl_vlan_ids
ETHERNET1:55:
ETHERNET1:3971:51,53,55
ETHERNET1:3972:2151,2153,2155
ETHERNET1:4002:
hmclab:~> lshwres -m system-01 -r virtualio --rsubtype eth --level lpar --filter lpar_names=ABCD7890 -F vswitch:port_vlan_id:addl_vlan_ids
ETHERNET0:52:
ETHERNET0:2152:
LAB1:~> lshwres -m system-01 -r virtualio --rsubtype eth --level lpar --filter lpar_names=ABCD7869 -F vswitch:port_vlan_id:addl_vlan_ids
ETHERNET0:54:4001
ETHERNET0:3968:52,54
ETHERNET1:3969:701,702,2152,2154,5569
ETHERNET1:4002:
ETHERNET1:5001
予想される出力はETHERNET0= 52,54,3968,etc & ETHERNET1=5001,3969.701,
次のとおりです。
ベストアンサー1
:
同じイーサネット番号を持つ行を接続してaをaに置き換えるには、出力を,
次にパイプすることができます。
awk -F: '
/ETHERNET/{ i = $1; v[i] = v[i] "," $2; if($3!="")v[i] = v[i] "," $3 }
END{ n = asorti(v,x)
for(j=1;j<=n;j++){ i = x[j]; print i "=" substr(v[i],2) }
}'
:
これにより、最初のフィールドをETHERNET0
インデックスとして使用してv
フィールド2と3(フィールド3が空でない場合)を収集する連想配列に各行が分割されます。入力が終わると、配列のキー(インデックス)がソートされて出力を開始でき、ETHERNET0
各キーの出力と収集されたフィールドを印刷します。常に先頭に追加するため、常に追加のコンマである最初の文字を省略します。フィールド 2.
各コマンドを独立して処理した結果は次のとおりです。
ETHERNET0=64,2215,52,64,3969,701,702,2152,2154,4001
ETHERNET1=55,3971,51,53,55,3972,2151,2153,2155,4002
ETHERNET0=52,2152
ETHERNET0=54,4001,3968,52,54
ETHERNET1=3969,701,702,2152,2154,5569,4002,5001