通过管道从标准输出中剪切和排序分隔日期
Cut and sort delimited dates from stdout via pipe
我正在尝试从 stdout 中拆分一些字符串以从中获取日期,但我有两种情况
full.20201004T033103Z.vol93.difftar.gz
full.20201007T033103Z.vol94.difftar.gz
应该产生:20201007T033103Z,这是离现在最近的日期(最新)
或:
inc.20200830T033103Z.to.20200906T033103Z.vol1.difftar.gz
inc.20200929T033103Z.to.20200908T033103Z.vol10.difftar.gz
应该获取第二个日期(.to. 之后)而不是第一个日期,并且只打印最新的日期:20200908T033103Z
我试过的:
cat dates_file | awk -F '.to.' 'NF > 1 {print }' | cut -d\. -f1 | sort -r -t- -k3.1,3.4 -k2,2 | head -1
这只适用于第二种情况,不包括第一种情况,而且我不确定日期排序逻辑。
这是一个样本数据
full.20201004T033103Z.vol93.difftar.gz
full.20201004T033103Z.vol94.difftar.gz
full.20201004T033103Z.vol95.difftar.gz
full.20201004T033103Z.vol96.difftar.gz
full.20201004T033103Z.vol97.difftar.gz
full.20201004T033103Z.vol98.difftar.gz
full.20201004T033103Z.vol99.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.manifest
inc.20200830T033103Z.to.20200906T033103Z.vol1.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol10.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol11.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol12.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol13.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol14.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol15.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol16.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol17.difftar.gz
要从样本数据中获取最新数据,您可以使用此 awk
:
awk '{
sub(/^(.*\.to|[^.]+)\./, "")
gsub(/\..+$|[TZ]/, "")
}
[=10=] > max {
max = [=10=]
}
END {
print max
}' file
20201004033103
我正在尝试从 stdout 中拆分一些字符串以从中获取日期,但我有两种情况
full.20201004T033103Z.vol93.difftar.gz
full.20201007T033103Z.vol94.difftar.gz
应该产生:20201007T033103Z,这是离现在最近的日期(最新)
或:
inc.20200830T033103Z.to.20200906T033103Z.vol1.difftar.gz
inc.20200929T033103Z.to.20200908T033103Z.vol10.difftar.gz
应该获取第二个日期(.to. 之后)而不是第一个日期,并且只打印最新的日期:20200908T033103Z
我试过的:
cat dates_file | awk -F '.to.' 'NF > 1 {print }' | cut -d\. -f1 | sort -r -t- -k3.1,3.4 -k2,2 | head -1
这只适用于第二种情况,不包括第一种情况,而且我不确定日期排序逻辑。
这是一个样本数据
full.20201004T033103Z.vol93.difftar.gz
full.20201004T033103Z.vol94.difftar.gz
full.20201004T033103Z.vol95.difftar.gz
full.20201004T033103Z.vol96.difftar.gz
full.20201004T033103Z.vol97.difftar.gz
full.20201004T033103Z.vol98.difftar.gz
full.20201004T033103Z.vol99.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.manifest
inc.20200830T033103Z.to.20200906T033103Z.vol1.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol10.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol11.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol12.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol13.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol14.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol15.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol16.difftar.gz
inc.20200830T033103Z.to.20200906T033103Z.vol17.difftar.gz
要从样本数据中获取最新数据,您可以使用此 awk
:
awk '{
sub(/^(.*\.to|[^.]+)\./, "")
gsub(/\..+$|[TZ]/, "")
}
[=10=] > max {
max = [=10=]
}
END {
print max
}' file
20201004033103