首页 > 解决方案 > AWK 以相反的顺序读取文件并打印指定的列

问题描述

是否可以使用一个 awk 命令以相反的顺序读取文件并仅打印指定的列?例如有一个文本文件需要解析:

A1 1 ABC 7
B2 2 CBZ 8
C3 3 XVY 9

要以相反的顺序打印行,我使用以下命令:

awk '{a[i++]=$0}END{for(j=i-1;j>=0;j--)print a[j];}' file.txt

但我只需要打印 $1 和 $3 列吗?期望的输出:

C3 XVY
B2 CBZ
A1 ABC

当然,它可以通过多种方式完成,但目标是单个 awk 命令。

标签: bashshellawk

解决方案


在您的命令中,您将整行($0)存储在 arraya中,只需稍作修改,您就可以存储所需的列,如下所示:

awk '{a[i++]=$1FS$3}END{for(j=i-1;j>=0;j--)print a[j];}'
C3 XVY
B2 CBZ
A1 ABC

推荐阅读