我需要在 linux 中使用 shell 排序对文件进行排序。排序需要基于每个文件行中包含的时间戳值。时间戳的格式不规则,并且没有指定前导零到月份、日期等,所以我执行的排序不正确(即它们的格式是“M/D/YYYY H:MI:S AM”;所以所以“10/12/2012 12:16:18 PM”出现在“7/24/2012 12:16:18 PM”之前,它出现在“7/24/2012 12:17:18 AM”之前)。
是否可以根据时间戳进行排序?
我正在使用以下命令对文件进行排序:
sort -t= -k3 file.txt -o file.txt.sorted
(使用等号作为分隔符 => -t=
;使用第三列作为排序列 => -k3
)
一个示例文件如下:
<r id="abcd" t="10/12/2012 12:16:17 AM"><d><nv n="name" v="868" /><nv n="name0" v="73" /><nv n="name1" v="13815004" /></d></r>
<r id="defg" t="7/24/2012 12:16:17 PM"><d><nv n="name" v="0" /><nv n="name0" v="0" /><nv n="name1" v="0" /></d></r>
<r id="abcd" t="7/24/2012 12:16:17 PM"><d><nv n="name" v="0" /><nv n="name0" v="0" /><nv n="name1" v="0" /></d></r>
<r id="zxy" t="7/24/2012 12:16:17 PM"><d><nv n="name" v="0" /><nv n="name0" v="0" /><nv n="name1" v="59542676" /></d></r>
<r id="fghj" t="7/24/2012 12:16:17 PM"><d><nv n="name" v="38" /><nv n="name0" v="0" /><nv n="name1" v="3004537" /></d></r>
<r id="defg" t="7/24/2012 12:16:18 AM"><d><nv n="name" v="177" /><nv n="name0" v="0" /><nv n="name1" v="5888870" /></d></r>