获取变量内文件中最年轻和最旧的日期 (bash)

Get the youngest and oldest date within a file inside a variable (bash)

是否可以从一个大文件中提取最年轻和最旧的时间并放入一个变量中?例如(原文件没有空格):

2020747462 170615095632 984732454353
2020747462 170615143620 278645456456
2020747462 170615103212 192040326564
2020747462 170615035912 139583824564

并获得

Youngest: 170615035912
Oldest  : 170615143620

时间格式 (yymmddhhmmss) 在行中的固定位置。我在互联网上四处张望,但找不到任何例子或类似的东西。我希望 bash 中有人知道如何做到这一点。

cut -c11-22 file \
| sort \
| sed -n -e '1{s/^/Youngest: /;p};${s/^/Oldest  : /;p}'

第一行从文件中提取字符 11-22,接下来对输出行进行排序,最后一行打印第一行和最后一行,并在前面加上 Youngest 和 Oldest。

perl -a -ne '
   BEGIN{$y=9}
   next if $.==1 || $.==2 || eof; # to skip first second and last line
   $y=$F[1] if $F[1] lt $y;
   $o=$F[1] if $F[1] gt $o;
   END{print "Youngest: $y\nOldest  : $o\n"}' <file

为了完整起见,以下是 awk 的示例:

awk '{ dayt[NR]= } END { asort(dayt,dat1);printf "Youngest:\t"dat1[1]"\nOldest:\t"dat1[NR]"\n" }' filename

其中 filename 是有问题的文件,将第二列放入名为 dayt 的数组中,然后使用 asort 按值对它们进行排序,将结果放入 dat1。最后打印第一个和最后一个条目(最后一个条目索引由 NR 表示)