sort命令使用问题:如何按日.月.年格式日期正确排序结果
解决方法
首先修正你命令的结构问题:你之前把sort放在了子shell外部,导致VAR只捕获了未排序的grep输出,sort根本没作用于目标内容。必须将sort整合到管道链中,让它处理grep的结果后再存入变量。
针对日.月.年格式的日期,要按年→月→日升序排序,你需要精确指定sort的排序键,避开前缀字符串的干扰。正确的命令如下:
VAR="$(find . -maxdepth 2 -type f -name 'filename' | xargs grep -o -m 1 "♦SOMETEXT►►..........♦" | sort -t '.' -k 3.1,3.4n -k 2,2n -k 1.11,1.12n)"
参数说明:
-t '.':以.作为字段分隔符-k 3.1,3.4n:取第三个字段的前4个字符(即年份),按数字升序排序-k 2,2n:取第二个字段(即月份),按数字升序排序-k 1.11,1.12n:取第一个字段的第11-12个字符(即日期,因为前缀♦SOMETEXT►►共10个字符),按数字升序排序
这样处理后,结果会按照你预期的顺序排列:先11.12.2011,再01.01.2012,最后11.01.2012。
内容的提问来源于stack exchange,提问作者diggidre
相关产品推荐
相关产品推荐

