Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux-按日期对文件排序字段_Linux_File_Date_Converter - Fatal编程技术网

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月份。我认为将日期转换为可排序的格式会更容易