我正在尝试对以下文本进行排序:
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我想根据两个标准进行排序:
文本来自一个名为text.txt的文件,我使用cat命令。
我使用以下命令:
cat text.txt | sort -k6 -k5,1n但是,它会产生以下输出(它按城市名称排序,而不是按时间字段排序):
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.城市名称上对文本排序,然后在时间字段上排序?
有人能帮我一下吗?
发布于 2014-11-25 23:31:21
你可以简化你的sort。这个可以用:
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格式。
发布于 2014-11-25 23:34:42
如果你做sort -k 6,它会在字段6上排序,然后是7,8,9等等。
KEYDEF是F.C[,F.C]表示开始和停止位置,其中F是字段编号,C是字段中的字符位置;两者都是原点1,停止位置默认为行的结束。
如果只想按字段6排序,请将其显式设置为start和stop字段:
sort -k 6,6如果您想按6排序,然后按5排序,请执行以下操作:
sort -k 6,6 -k 5,5https://stackoverflow.com/questions/27130543
复制相似问题