Linux-按日期对文件排序字段
我正在尝试按日期字段对文件进行排序。我意识到这以前已经做过了,但是,我找不到具有以下日期格式的示例 例如: 我有一个包含以下内容的文件:Linux-按日期对文件排序字段,linux,file,date,converter,Linux,File,Date,Converter,我正在尝试按日期字段对文件进行排序。我意识到这以前已经做过了,但是,我找不到具有以下日期格式的示例 例如: 我有一个包含以下内容的文件: example 1234 Sep/30/2013 example 1234 Jun/2014 example 1234 Oct/03/2013 example 1234 Oct/03/2013 example 1234 Oct/04/2013 example 1234 Oct/01/2013 如何按日期字段对其排序 提前感谢 编辑: 这是我的准确数据(注意到
example 1234 Sep/30/2013
example 1234 Jun/2014
example 1234 Oct/03/2013
example 1234 Oct/03/2013
example 1234 Oct/04/2013
example 1234 Oct/01/2013
如何按日期字段对其排序
提前感谢
编辑:
这是我的准确数据(注意到我遗漏了一个字段)
以下是我运行的命令:
排序-t'+'-k 4-M明细表|列-t-s'+'
Switched at Birth 3x01 Season 3, Episode 1 Jan/2014
Falling Skies 4x01 Season 4, Episode 1 Jun/2014
Bones 9x03 El Carnicero en el Coche Sep/30/2013
Sleepy Hollow 1x03 For the Triumph of Evil Sep/30/2013
Greys Anatomy 10x03 Everybody's Crying Mercy Oct/03/2013
Haven 4x04 Lost and Found Oct/04/2013
New Girl 3x03 Double Date Oct/01/2013
如您所见,它仍然没有正确排序。您可以使用
排序
命令-可以查看更多信息/示例
(人工分拣
)
编辑2:由于更新了数据,解决方案将是:排序-t'+'-k4.8,4.11-k4.1M-k4.5,4.6-bmyu file.txt
正如@sdenham所指出的,前面的答案幸运地适用于您的示例文本。然而,加入一些较老的年份会破坏命令
使用相同的命令解决这个问题的一个快速方法是用伪日期字段替换坏日期
cat example.txt | sed 's:\(.[[:space:]][[:alpha:]]*\)/\([[:digit:]]*\)$:\1/15/\2:g' | sort -t '+' -k 4.8,4.11 -k 4.1M -k 4.5,4.6 -b
基本上,我只是为每一行输入了一个day
字段15
,每一行只有一个月/年。很老套,但很管用。我相信有更好的办法
前提是,您实际使用的是最近更新的数据格式。(
Bones+9x03+El Carnicero en El-Coche+Sep/2013
)您可以使用排序
命令-可以查看更多信息/示例
(人工分拣
)
编辑2:由于更新了数据,解决方案将是:排序-t'+'-k4.8,4.11-k4.1M-k4.5,4.6-bmyu file.txt
正如@sdenham所指出的,前面的答案幸运地适用于您的示例文本。然而,加入一些较老的年份会破坏命令
使用相同的命令解决这个问题的一个快速方法是用伪日期字段替换坏日期
cat example.txt | sed 's:\(.[[:space:]][[:alpha:]]*\)/\([[:digit:]]*\)$:\1/15/\2:g' | sort -t '+' -k 4.8,4.11 -k 4.1M -k 4.5,4.6 -b
基本上,我只是为每一行输入了一个day
字段15
,每一行只有一个月/年。很老套,但很管用。我相信有更好的办法
前提是,您实际使用的是最近更新的数据格式。(
Bones+9x03+El Carnicero en El-Coche+Sep/30/2013
)您想对日志进行排序??具体排序是什么?已经有成千上万各种各样的例子了是的。它是一个包含电视节目标题、集号和发布日期的文件。我想按电视节目的发布日期排序。我知道有很多指南,但是没有一个与这个日期相匹配,我不确定否决这个问题的人是否知道这可以通过命令行来完成;但是,在任何情况下,它都可以——这是一个正确的linux游戏问题?已经有成千上万各种各样的例子了是的。它是一个包含电视节目标题、集号和发布日期的文件。我想按电视节目的发布日期排序。我知道有很多指南,但是没有一个与这个日期相匹配,我不确定否决这个问题的人是否知道这可以通过命令行来完成;但是,无论如何,它是可以的——这是一个linux游戏区的问题。然而,我已经这样做了,因为奇怪的日期格式,我已经尝试了几个小时了。我似乎找不到正确的语法/格式实际上,您不需要sed
。试试这个:sort-k3-masdf.txt
查看我的更新。作为将来的参考,永远不要使用“假”数据,因为它不必要地混淆了实际问题。您的解决方案很接近,但是,它列出了10月份之后的9月份。我认为将日期转换成可排序的格式会更容易。我已经这样做了,但是,由于奇怪的日期格式,排序不正确。我已经尝试了几个小时了。我似乎找不到正确的语法/格式实际上,您不需要sed
。试试这个:sort-k3-masdf.txt
查看我的更新。作为将来的参考,永远不要使用“假”数据,因为它不必要地混淆了实际问题。您的解决方案很接近,但是,它列出了10月份之后的9月份。我认为将日期转换为可排序的格式会更容易