加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – 如何将文件行排序到末尾的第二个单词

发布时间:2020-12-15 22:51:14 所属栏目:安全 来源:网络整理
导读:我想根据空格前的最后一个数字对该线进行排序.这是一个简化的例子: c3_abl_eerf_14 saswa.bla_haha_2 dnkwws.hey_3 ddd 这就是我想要的结果: a.bla_haha_2 dnkwws.hey_3 dddc3_abl_eerf_14 sasw 我不知道怎么做,也许是通过命令排序?并且,有时我使用了sort
我想根据空格前的最后一个数字对该线进行排序.这是一个简化的例子:

c3_abl_eerf_14 sasw
a.bla_haha_2 dnkww
s.hey_3 ddd

这就是我想要的结果:

a.bla_haha_2 dnkww
s.hey_3 ddd
c3_abl_eerf_14 sasw

我不知道怎么做,也许是通过命令排序?并且,有时我使用了sort命令,它可能错误地处理了不到2的14,我不希望这种情况发生.

解决方法

此命令链适用于您的示例:

sed -r 's/.*_([0-9]+) .*/1 &/' file|sort -n|sed 's/[^ ]* //'

这个想法是

>首先提取数字,添加到行的开头
>按此数字排序所有行
>删除号码

更新

无论数字在哪里,都按行中的最后一个数字排序:

awk -F'[^0-9]+' '{$0=(length($NF)?$NF:$(NF-1)) OFS $0}7' file|sort -n|sed 's/[^ ]* //'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读