awk输出中的列之间没有空格

时间:2019-06-03 23:47:04

标签: awk

我正在尝试使用awk打印2列输出。我需要将它们隔开一个空格。在此示例中,以下第一列值为“ 1”,第二列值为“ 1 [”。从输出中可以看到,两个值合并在一起。我无法在两者之间打印空格。 -vOFS标志似乎没有帮助。我也在此awk语句中仅打印cmd输出的最后一行。

此外,我还想摆脱第二列输出('1 [')中的'['。因此,仅留下“ 1”。我该怎么做?

awk命令: sudo iblinkinfo | awk -vOFS ='''NR == 1; END {打印$ 11 $ 12}'

我得到的输出是: CA: MT25408 ConnectX Mellanox Technologies: 11[

我想要的输出: 1 1

原始cmd输出:(最后一行以“ CA:MT ...”开头)。尽管第一列输出(带有$ 1)是十六进制值0xe41d2d0300e29e01。我想打印第11列和第12列;都是1 1 [(接近结尾)

           1   34[  ] ==(                Down/ Polling)==>             [  ] "" ( )
           1   35[  ] ==(                Down/ Polling)==>             [  ] "" ( )
           1   36[  ] ==(                Down/ Polling)==>             [  ] "" ( )
CA: MT25408 ConnectX Mellanox Technologies:
      0xe41d2d0300e29e01      2    1[  ] ==( 4X          10.0 Gbps Active/  LinkUp)==>       1    1[  ] "Infiniscale-IV Mellanox Technologies" ( )

1 个答案:

答案 0 :(得分:1)

这是您要做什么吗?

$ cat file
           1   34[  ] ==(                Down/ Polling)==>             [  ] "" ( )
           1   35[  ] ==(                Down/ Polling)==>             [  ] "" ( )
           1   36[  ] ==(                Down/ Polling)==>             [  ] "" ( )
CA: MT25408 ConnectX Mellanox Technologies:
      0xe41d2d0300e29e01      2    1[  ] ==( 4X          10.0 Gbps Active/  LinkUp)==>       1    1[  ] "Infiniscale-IV Mellanox Technologies" ( )

$ awk 'END{print $11, $12+0}' file
1 1

上面的内容依赖于未定义的行为,因为ENDIX部分中的$ 0,$ 1等值是POSIX标准未定义的,但是在您使用时,它将在GNU awk中起作用。