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

awk输出中的列之间没有空格,awk,Awk,我正在尝试使用awk打印2列输出。我需要用空格把它们分开。在下面的示例中,第一列的值为“1”,第二列的值为“1[”。如输出中所示,这两个值合并在一起。我无法打印中间的空格,-vOFS标志似乎没有帮助。我也只打印此awk语句中cmd输出的最后一行 此外,我还想去掉第二列输出('1[')中的“[”。因此它只剩下“1”。我该怎么做呢 awk命令: sudo iblinkinfo | awk-vOFS=''NR==1;END{print$11$12} 我得到的awk输出: CA:MT25408 Con

我正在尝试使用awk打印2列输出。我需要用空格把它们分开。在下面的示例中,第一列的值为“1”,第二列的值为“1[”。如输出中所示,这两个值合并在一起。我无法打印中间的空格,-vOFS标志似乎没有帮助。我也只打印此awk语句中cmd输出的最后一行

此外,我还想去掉第二列输出('1[')中的“[”。因此它只剩下“1”。我该怎么做呢

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

我得到的awk输出:

CA:MT25408 ConnectX Mellanox Technologies:
11[

我想要的awk'd输出:

1 1

原始cmd输出:(最后一行以“CA:MT…”)开头。尽管第一列输出(带$1)是十六进制值0xe41d2d0300e29e01。我想打印第11列和第12列;它们是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

以上内容依赖于未定义的行为,因为POSIX标准未定义结尾部分中的$0、$1等值,但在您使用GNU awk时可以使用。

尝试使用
{print$11”“$12}
也一样。但是没有运气。请将
sudo iblinkinfo
的输出和您希望的问题示例输入输出添加到您的问题中。编辑原始帖子。谢谢@Cyrus
print$11,$12
。您所拥有的将变量连接到一个字符串中,因此不会将
OFS
放在它们之间。当然
printf
允许您非常明确地说明希望输出的外观。不确定原因,但在
awk
中,hat选项似乎经常被忽略。是的,没错!谢谢@Ed!
$ 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