4番目のフィールドを2行ではなく1行にマージする方法

4番目のフィールドを2行ではなく1行にマージする方法

これはshow versionCisco APIC の出力です。

ご覧のとおり、コントローラのホスト名がAB_CDE_FGH_IJ_ACI_APC-00012行に分割される奇妙な出力があります。

他のホスト名も同様です。

show versionCisco APIC の実際の出力

AB_CDE_FGH_IJ_ACI_APC_0001# show version 

 Role        Pod         Node        Name                      Version              
 ----------  ----------  ----------  ------------------------  -------------------- 
 controller  1           1           AB_CDE_FGH_IJ_ACI_        3.2(4e)              
                                     APC-0001                                       
 controller  2           2           AB_CDE_FGH_IJ_ACI_        3.2(4e)              
                                     APC-0002                                       
 controller  3           3           AB_CDE_FGH_IJ_ACI_        3.2(4e)              
                                     APC-0003                                       
 spine       1           111         AB_CDE_FGH_IJ_ACI_SPN_01  n9000-13.2(4e)       
                                     11                                             
 spine       1           112         AB_CDE_FGH_IJ_ACI_SPN_01  n9000-13.2(4e)       
                                     12                                             
 spine       1           113         AB_CDE_FGH_IJ_ACI_SPN_01  n9000-13.2(4e)       
                                     13                                             
 leaf        1           1101        AB_CDE_FGH_IJ_ACI_LEF_11  n9000-13.2(4e)       
                                     01                                             
 leaf        1           1102        AB_CDE_FGH_IJ_ACI_LEF_11  n9000-13.2(4e)       
                                     02                                             
 leaf        1           1103        AB_CDE_FGH_IJ_ACI_LEF_11  n9000-13.2(4e)       
                                     03    

Cisco ACI自体がこの問題を解決できるかどうかはわかりませんが、Cisco APIC出力をファイルにsed保存してLinuxシステムでスクリプトを実行すると問題を解決できると思いました。awkshow versionshow_version.txt

sed残念ながら、私はスクリプトに精通していませんawk

そのような出力を生成する方法はありますか?

[user@Linux ~]$ sed_or_awk_script_here show_version.txt

AB_CDE_FGH_IJ_ACI_APC_0001# show version 

 Role        Pod         Node        Name                        Version              
 ----------  ----------  ----------  ------------------------    -------------------- 
 controller  1           1           AB_CDE_FGH_IJ_ACI_APC_0001        3.2(4e)
 controller  2           2           AB_CDE_FGH_IJ_ACI_APC_0002        3.2(4e)                                   
 controller  3           3           AB_CDE_FGH_IJ_ACI_APC_0003        3.2(4e)                                   
 spine       1           111         AB_CDE_FGH_IJ_ACI_SPN_0111  n9000-13.2(4e)                          
 spine       1           112         AB_CDE_FGH_IJ_ACI_SPN_0112  n9000-13.2(4e)                            
 spine       1           113         AB_CDE_FGH_IJ_ACI_SPN_0113  n9000-13.2(4e)                            
 leaf        1           1101        AB_CDE_FGH_IJ_ACI_LEF_1101  n9000-13.2(4e)                            
 leaf        1           1102        AB_CDE_FGH_IJ_ACI_LEF_1102  n9000-13.2(4e)                            
 leaf        1           1103        AB_CDE_FGH_IJ_ACI_LEF_1103  n9000-13.2(4e)       

 [user@Linux ~]$

ベストアンサー1

awk最初の行がshow version空の行(3つのヘッダー行になる)と仮定して使用してください。

awk '
  NR<4{ print; next }        # print 3 header lines
  NF>1{                      # if number of fields > 1
    sub($4, $4 "%s" )        # append `%s` to 4th field
    fmtstr=$0                # save modified line in `fmtstr`
    next                     # continue with next line
  }
  { printf fmtstr "\n", $1 } # print `fmtstr` with first field as argument
' show_version.txt

出力:

 Role        Pod         Node        Name                      Version
 ----------  ----------  ----------  ------------------------  --------------------
 controller  1           1           AB_CDE_FGH_IJ_ACI_APC-0001        3.2(4e)
 controller  2           2           AB_CDE_FGH_IJ_ACI_APC-0002        3.2(4e)
 controller  3           3           AB_CDE_FGH_IJ_ACI_APC-0003        3.2(4e)
 spine       1           111         AB_CDE_FGH_IJ_ACI_SPN_0111  n9000-13.2(4e)
 spine       1           112         AB_CDE_FGH_IJ_ACI_SPN_0112  n9000-13.2(4e)
 spine       1           113         AB_CDE_FGH_IJ_ACI_SPN_0113  n9000-13.2(4e)
 leaf        1           1101        AB_CDE_FGH_IJ_ACI_LEF_1101  n9000-13.2(4e)
 leaf        1           1102        AB_CDE_FGH_IJ_ACI_LEF_1102  n9000-13.2(4e)
 leaf        1           1103        AB_CDE_FGH_IJ_ACI_LEF_1103  n9000-13.2(4e)

おすすめ記事