sorting命令在unix中无法正常工作以sortingcsv文件

我有一个csv文件,我需要根据时间戳订购。 这是csv中的第三列,我使用下面的命令来sorting:

awk 'NR<2{print $_;next}{ print $_ | "sort -t, -k3.8,3.11nr -k3.1,3.3rM -k3.4rd" }' 

当年份单一时,此命令正确sorting,但是对于多年存在的大数据,它会将较早的那个放在csv的某处。 样本如下:

 data2,Send for Translation To CTM,Dec 30 2013 02:22 data1,Send for Translation To CTM,Dec 30 2013 02:20 data1,Send for Translation To CTM,Sep 30 2014 03:22 data2,Send for Translation To CTM,Oct 30 2014 03:21 

我需要安排最新的时间戳数据,年份应按照以下顺序排列:2014年,2013年,2012年等…

我怎么能实现这个?

以下应该工作

  awk 'NR<2{print $_;next}{ print $_ | "sort -t, -k3.8,3.11rn -k3.1,3.3rM -k3.5,3.6rn -k3.12rd" }' 

'awk'片段将所有行,除了标题,排序命令。 这里键的顺序很重要:

k3.8,3.11rn提取年份的列和反向排序

k3.1,3.3rM提取第3列中的前3个字符进行反向月排序,其余的我们进行反向字典排序

k3.5,3.6rn提取一天和反向排序,最后我们也做同样的时间

尝试这个:

 sort -rft',' -k3 merged.csv 

我会尽力按日期排序,然后按时间排序

 awk -F"," '{print $3,$1,$2}' file.csv | sort -d' ' -k 1d -k 2d 

顺便说一句,如果你只是分享你的文件的一小部分将是很好的。 🙂