首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有3列的排序命令

使用带有3列的排序命令
EN

Stack Overflow用户
提问于 2014-11-25 23:24:26
回答 2查看 56关注 0票数 1

我正在尝试对以下文本进行排序:

代码语言:javascript
复制
Tue 2014 Nov 25 07:44:44 berlin VPN connection succeed
Tue 2014 Nov 25 08:01:12 paris VPN connection succeed
Tue 2014 Nov 25 08:44:45 berlin VPN connection succeed
Tue 2014 Nov 25 09:01:18 paris VPN connection succeed
Tue 2014 Nov 25 09:12:52 london VPN connection succeed
Tue 2014 Nov 25 09:44:45 berlin VPN connection succeed
Tue 2014 Nov 25 10:44:50 berlin VPN connection succeed
Tue 2014 Nov 25 10:57:34 dallas VPN connection succeed
Tue 2014 Nov 25 11:35:56 london VPN connection succeed
Tue 2014 Nov 25 11:47:05 amsterdam VPN connection succeed
Tue 2014 Nov 25 11:57:34 dallas VPN connection succeed
Tue 2014 Nov 25 12:47:06 amsterdam VPN connection succeed
Tue 2014 Nov 25 12:57:33 dallas VPN connection succeed
Tue 2014 Nov 25 13:47:06 amsterdam VPN connection succeed
Tue 2014 Nov 25 13:57:33 dallas VPN connection succeed
Tue 2014 Nov 25 14:47:07 amsterdam VPN connection succeed
Tue 2014 Nov 25 14:57:33 dallas VPN connection succeed
Tue 2014 Nov 25 09:14:07 london VPN connection disconnected
Tue 2014 Nov 25 09:35:05 paris VPN connection disconnected
Tue 2014 Nov 25 10:57:26 amsterdam VPN connection disconnected
Tue 2014 Nov 25 11:35:41 berlin VPN connection disconnected
Tue 2014 Nov 25 11:39:00 london VPN connection disconnected

我想根据两个标准进行排序:

  1. 首先对第6列(城市名称)进行排序
  2. ,然后对时间(第5列)进行排序

文本来自一个名为text.txt的文件,我使用cat命令。

我使用以下命令:

代码语言:javascript
复制
cat text.txt | sort -k6 -k5,1n

但是,它会产生以下输出(它按城市名称排序,而不是按时间字段排序):

代码语言:javascript
复制
Tue 2014 Nov 25 10:57:26 amsterdam VPN connection disconnected
Tue 2014 Nov 25 11:47:05 amsterdam VPN connection succeed
Tue 2014 Nov 25 12:47:06 amsterdam VPN connection succeed
Tue 2014 Nov 25 13:47:06 amsterdam VPN connection succeed
Tue 2014 Nov 25 14:47:07 amsterdam VPN connection succeed
Tue 2014 Nov 25 11:35:41 berlin VPN connection disconnected
Tue 2014 Nov 25 07:44:44 berlin VPN connection succeed
Tue 2014 Nov 25 08:44:45 berlin VPN connection succeed
Tue 2014 Nov 25 09:44:45 berlin VPN connection succeed
Tue 2014 Nov 25 10:44:50 berlin VPN connection succeed
Tue 2014 Nov 25 10:57:34 dallas VPN connection succeed
Tue 2014 Nov 25 11:57:34 dallas VPN connection succeed
Tue 2014 Nov 25 12:57:33 dallas VPN connection succeed
Tue 2014 Nov 25 13:57:33 dallas VPN connection succeed
Tue 2014 Nov 25 14:57:33 dallas VPN connection succeed
Tue 2014 Nov 25 09:14:07 london VPN connection disconnected
Tue 2014 Nov 25 11:39:00 london VPN connection disconnected
Tue 2014 Nov 25 09:12:52 london VPN connection succeed
Tue 2014 Nov 25 11:35:56 london VPN connection succeed
Tue 2014 Nov 25 09:35:05 paris VPN connection disconnected
Tue 2014 Nov 25 08:01:12 paris VPN connection succeed
Tue 2014 Nov 25 09:01:18 paris VPN connection succeed

我如何解决这个问题,这样我就可以在1.城市名称上对文本排序,然后在时间字段上排序?

有人能帮我一下吗?

EN

回答 2

Stack Overflow用户

发布于 2014-11-25 23:31:21

你可以简化你的sort。这个可以用:

代码语言:javascript
复制
sort -k6,6 file
Tue 2014 Nov 25 10:57:26 amsterdam VPN connection disconnected
Tue 2014 Nov 25 11:47:05 amsterdam VPN connection succeed
Tue 2014 Nov 25 12:47:06 amsterdam VPN connection succeed
Tue 2014 Nov 25 13:47:06 amsterdam VPN connection succeed
Tue 2014 Nov 25 14:47:07 amsterdam VPN connection succeed
Tue 2014 Nov 25 07:44:44 berlin VPN connection succeed
Tue 2014 Nov 25 08:44:45 berlin VPN connection succeed
Tue 2014 Nov 25 09:44:45 berlin VPN connection succeed
Tue 2014 Nov 25 10:44:50 berlin VPN connection succeed
Tue 2014 Nov 25 11:35:41 berlin VPN connection disconnected
Tue 2014 Nov 25 10:57:34 dallas VPN connection succeed
Tue 2014 Nov 25 11:57:34 dallas VPN connection succeed
Tue 2014 Nov 25 12:57:33 dallas VPN connection succeed
Tue 2014 Nov 25 13:57:33 dallas VPN connection succeed
Tue 2014 Nov 25 14:57:33 dallas VPN connection succeed
Tue 2014 Nov 25 09:12:52 london VPN connection succeed
Tue 2014 Nov 25 09:14:07 london VPN connection disconnected
Tue 2014 Nov 25 11:35:56 london VPN connection succeed
Tue 2014 Nov 25 11:39:00 london VPN connection disconnected
Tue 2014 Nov 25 08:01:12 paris VPN connection succeed
Tue 2014 Nov 25 09:01:18 paris VPN connection succeed
Tue 2014 Nov 25 09:35:05 paris VPN connection disconnected

这之所以有效,是因为您的时间戳使用了HH:MM:SS格式。

票数 3
EN

Stack Overflow用户

发布于 2014-11-25 23:34:42

如果你做sort -k 6,它会在字段6上排序,然后是7,8,9等等。

KEYDEF是F.C[,F.C]表示开始和停止位置,其中F是字段编号,C是字段中的字符位置;两者都是原点1,停止位置默认为行的结束

如果只想按字段6排序,请将其显式设置为start和stop字段:

代码语言:javascript
复制
sort -k 6,6

如果您想按6排序,然后按5排序,请执行以下操作:

代码语言:javascript
复制
sort -k 6,6 -k 5,5
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27130543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档