如何将第 4 个字段合并为 1 行而不是 2 行

如何将第 4 个字段合并为 1 行而不是 2 行

这是show versionCisco APIC 中的输出。

正如您所看到的,它有奇怪的输出,其中控制器的主机名AB_CDE_FGH_IJ_ACI_APC-0001被分成两行。

其他主机名也是如此。

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 本身中修复此问题,但我想可能可以通过sedawkCisco APICshow version输出保存到show_version.txt文件然后在 Linux 机器上运行脚本来修复此问题。

不幸的是,我不太擅长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是空行(使其成为三个标题行):

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)

相关内容