仅打印文件中的最后三列

Viv*_*gam 3 awk perl text-processing

我在 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
Run Code Online (Sandbox Code Playgroud)

期望输出:

 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
Run Code Online (Sandbox Code Playgroud)

使用的命令:

gawk '{ print $NF-1, $NF}' filename
Run Code Online (Sandbox Code Playgroud)

但它只打印最后两列。

CSM*_*CSM 7

假设

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

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


Ini*_*ian 6

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

gawk 'NF>=3{ print $(NF-2), $(NF-1), $NF}' file
Run Code Online (Sandbox Code Playgroud)

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