仅打印文件的最后三列

仅打印文件的最后三列

我在 Linux 上有这个文件:

 14:00:01.071 5255  604177
4 14:00:01.074 4608  1415742
 14:00:01.074 18398  1122001
2 14:00:01.074 11723  155575
5 14:00:01.075 4695  885808

期望的输出:

 14:00:01.071 5255  604177
 14:00:01.074 4608  1415742
 14:00:01.074 18398 1122001
 14:00:01.074 11723 155575
 14:00:01.075 4695  885808

使用的命令:

gawk '{ print $NF-1, $NF}' filename

但它只打印最后两列。

答案1

假设

  1. 分隔符是空格
  2. 您需要除第一列之外的所有列,该列可能为空,但会有分隔符
  3. 列之间只有一个分隔符

那么您可以使用cut -d' ' -f2-空格分隔值文件打印第二列到最后一列的内容。

答案2

这是非常不正确的,$NF-1会打印最后一列的值减去一。您需要将命令分组在 内(..),因为NF是一个变量

gawk 'NF>=3{ print $(NF-2), $(NF-1), $NF}' file

该部分NF>=3是为了安全地验证您正在打印保证至少有 3 个字段的行上的最后 3 个字段。

答案3

$ awk '{ print $(NF-2), $(NF-1), $NF}' file1
14:00:01.071 5255 604177
14:00:01.074 4608 1415742
14:00:01.074 18398 1122001
14:00:01.074 11723 155575
14:00:01.075 4695 885808

答案4

我用下面的命令进行了测试,效果很好

 sed "s/^[0-9]\{1,\}//g" filename| sed -r "s/^\s+//g"

输出

14:00:01.071 5255  604177
14:00:01.074 4608  1415742
14:00:01.074 18398  1122001
14:00:01.074 11723  155575
14:00:01.075 4695  885808

相关内容