我正在尝试使用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" ( )
答案 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中起作用。