linux - 返回多个数据文件的日期时间列的范围(最小值和最大值)的 Shell 脚本

标签 linux shell date range

我有多个数据文件,“|”分开,我想用 shell 脚本获取所有日期列的范围(我是 shell 编程的新手)。数据没有标题。

这是我的一行数据,第 11 列中的 date_time 列。

2546|Sprint||0||0|0||4|0|2015-10-01 05:49:51

我写了一段代码,但得到的结果却是乱码:

awk -F"[-,:. ]" '

BEGIN{

min_ext="99999999999999999999"

}
{
ext=$11$12$13$14$15$116$17; 
if(min_ext>ext){min_ext=ext}
if(max_ext<ext){max_ext=ext}
}


END{

print "min ext "min_ext
print "max ext "max_ext
}' data.csv

最佳答案

没有给我们太多数据来处理...... :) 组成输入:

cat max
2546|Sprint||0||0|0||4|0|2015-10-02 05:49:51
2547|Sprint||0||0|0||4|0|2015-10-01 05:49:51
2548|Sprint||0||0|0||4|0|2015-10-06 05:49:51

一些输出:

sort -t'|' -k11,11 max | awk 'NR==1;{last=$0}END{print last}' 
2547|Sprint||0||0|0||4|0|2015-10-01 05:49:51
2548|Sprint||0||0|0||4|0|2015-10-06 05:49:51

编辑 1:咯咯地笑一个 awk-only 解决方案:

awk -F'|' '{i[$11]=$0} END{c=asorti(i,o);print i[o[1]];print i[o[c]]}' max
2547|Sprint||0||0|0||4|0|2015-10-01 05:49:51
2548|Sprint||0||0|0||4|0|2015-10-06 05:49:51

关于linux - 返回多个数据文件的日期时间列的范围(最小值和最大值)的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53525312/

相关文章:

linux - 使用 awk 计算多列中的字数

arrays - Bash 脚本 - 函数退出时全局变量变空

linux - 将文本输出存储在变量中 (bash)

可以在单线程进程中的两个连续 C 语句之间修改堆上的内存吗

c# - ubuntu 中 vscode 中的 oracle 连接

linux - 在 Ubuntu 服务器 12.04.4 上编译 Node.js v0.11.12-release 错误

shell - 在unix中检查文件是否为空

java - 如何从java中的unix时间戳中提取时间?

MYSQL 在时间戳上选择日期

python - 逻辑 AND 数据帧在一起