0

我有文件,在该文件中,第 5 个文件是日期字段。我想剪切该字段并在该字段中找到最小值。

请帮帮我。

我的日期格式如下:

05142013
05132013
05152013
4

2 回答 2

2

cut总是有利于切割(很明显)。所以,cut -f5能做到。

关于最短日期,您可以使用sort. 由于您具有 MMDDYYYY 之类的格式,因此可以根据日期对其进行排序:

sort -k1.5,8                    -k1.1,2                 -k1.3,4            file
      year (5th to 8th chars)    month (first 2 chars)   day (3rd and 4th chars)

所以应该在一起

sort -k1.5,8 -k1,2 -k1.3,4 <(cut -f5 file)

测试

$ cat file
hello my name is 05142013
bye my name is 05132013
hello blabla name is 07132013
hello my name bloooo 02192013
hello you name is 05152013
hello my blabla is 05152012
$ sort -k1.5,8 -k1,2 -k1.3,4 <(cut -d" " -f5 file)
05152012
02192013
05132013
05142013
05152013
07132013

更新

正如devnull 所评论的那样,它就足够了k1.5,8MMDD其余要排序的文本也是如此,并且不需要指定非默认顺序。

sort -k1.5,8 <(cut -f5 file)
于 2013-06-27T13:57:14.590 回答
1

如果您希望完全使用GNU awk.

awk  ' 
match($5,/(..)(..)(....)/,ldate) {
    ndate = mktime (ldate[3]" "ldate[1]" "ldate[2]" "0" "0" "0);
    fdate = (NR>1 && fdate < ndate) ? fdate : ndate
}
END {
print strftime("%d%m%Y",fdate)
}' FS="|" inputFile
于 2013-06-27T14:11:37.307 回答