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,8ているように、ソートされる残りのテキストと同様に、それで十分でありMMDD、デフォルト以外の順序を指定する必要はありません。

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 に答える