【发布时间】:2016-09-29 07:08:48
【问题描述】:
我有一个这样的文件
$> cat testfile.txt
abc_xyz_2a foo
dft_pqr_abc_5c bar
pqr_ijk_1a alpha
efg_5b beta
ijk_pqr_5a gamma
pqr_ijk_1b alpha
我想根据第一列的最后一个值对行进行排序,在最后一个下划线 _ 之后,例如 1a,2a,5a,5b,5c
所以这是我的预期输出。
pqr_ijk_1a alpha
pqr_ijk_1b alpha
abc_xyz_2a foo
ijk_pqr_5a gamma
efg_5b beta
dft_pqr_abc_5c bar
有人可以建议一种实现预期输出的方法吗?
我尝试了什么
我尝试在第一列的最后一个下划线之后提取部分并排序,但这只会打印那些关键字,而不是整行。
$> awk '{print $1}' testfile.txt|rev|awk -F_ '{print $1}'|rev|sort
1a
2a
5a
5b
5c
我想可能有一种方法可以以某种方式保存/记下行号并基于此输出?我在 awk 中使用 NR 尝试了一些成功和尝试,但未成功。
编辑:在以1b 结尾的文件中添加了一行来处理另一种情况。根据它改变了预期的输出。
【问题讨论】: