bash - 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 命令。
解决方案
在您的命令中,您将整行($0
)存储在 arraya
中,只需稍作修改,您就可以存储所需的列,如下所示:
awk '{a[i++]=$1FS$3}END{for(j=i-1;j>=0;j--)print a[j];}'
C3 XVY
B2 CBZ
A1 ABC
推荐阅读
- c# - 实体框架组映射表
- c++ - 使用模板重载运算符 []
- php - Laravel 为外部用户登录成功设置会话或令牌 - 无用户仅数据库 Api 用户
- python - 如何将信息获取到数据框?
- java - Elasticsearch:java.lang.IllegalArgumentException:在 docker 容器上运行时不允许自我抑制
- c++ - 为什么我的后增量运算符重载在 cout 流中不起作用?
- php - Symfony LexikMaintenanceBundle - 服务“lexik_maintenance.driver.factory”依赖于不存在的服务“translator.default”
- python - Django Admin 如何添加过滤器菜单,如基本 UserModel:
- angular - 角模板冻结直到操作完成
- postgresql - 如何在逗号后使用 3 个数字将 varchar 转换为浮点类型 PostgreSQL