如何编写无需文件的Bash命令输出最早与最晚日期
使用AWK从标准输入提取最早和最晚日期
直接用这条AWK命令就能处理标准输入的日期,输出最早和最晚的日期:
awk '{ if (NR == 1) { min = $0 max = $0 } else { if ($0 < min) min = $0 if ($0 > max) max = $0 } } END { print min print max }'
为什么这个命令有效?
因为你输入的日期是YYYY-MM-DD格式,这种格式的字符串可以直接按字典序比较——年份在前,接着是月份、日期,字符串的大小顺序和实际日期的先后顺序完全一致,不需要额外做日期格式转换。
示例用法
输入以下内容(输入完成后按Ctrl+D结束输入):
1910-04-21 2015-03-05 1930-01-23 1908-06-02 2015-07-13
会输出:
1908-06-02 2015-07-13
你也可以配合管道从文件读取输入:
cat your_dates.txt | awk '{if(NR==1){min=$0; max=$0} else {if($0<min)min=$0; if($0>max)max=$0}} END{print min; print max}'
内容的提问来源于stack exchange,提问作者Big Chain
相关产品推荐
相关产品推荐

