是否可以从大文件中提取最年轻和最早的时间并放入变量?例如(原始文件没有空格):
2020747462 170615095632 984732454353
2020747462 170615143620 278645456456
2020747462 170615103212 192040326564
2020747462 170615035912 139583824564
并获取
Youngest: 170615035912
Oldest : 170615143620
时间格式(yymmddhhmmss)位于行中的固定位置。我在互联网上环顾四周,但找不到任何例子或类似的东西。我希望有人知道如何在bash中实现这一目标。
答案 0 :(得分:1)
cut -c11-22 file \
| sort \
| sed -n -e '1{s/^/Youngest: /;p};${s/^/Oldest : /;p}'
第一行从文件中提取字符11-22,下一行对输出行进行排序,最后一行打印第一行和最后一行,前面加上最年轻和最旧的字。
答案 1 :(得分:0)
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
答案 2 :(得分:0)
为了完整性,以下是awk的示例:
awk '{ dayt[NR]=$2 } END { asort(dayt,dat1);printf "Youngest:\t"dat1[1]"\nOldest:\t"dat1[NR]"\n" }' filename
如果filename是有问题的文件,请将第二列放入名为dayt的数组中,然后使用asort按值对其进行排序,将结果放在dat1中。最后打印第一个和最后一个条目(由NR表示的最后一个条目索引)