如何在Bash中按YYYYMMDDHHMMSSTTT格式时间戳对文件行排序?
按毫秒级时间戳排序Bash脚本输出文件
嗨,作为Bash新手能写出正则匹配的脚本已经很棒啦!针对你要按YYYYMMDDHHMMSSTTT格式的毫秒级时间戳排序文件行的需求,其实用sort命令就能轻松搞定,给你几个实用的方案:
基础快速排序:因为你的时间戳是固定长度的纯数字字符串,且是每行的第一列(逗号分隔),直接使用默认的
sort命令就完全够用:sort input.csv > sorted.csv原理是
sort默认按字符顺序比较,而固定长度的时间戳字符串从左到右的字符顺序正好对应时间先后,比如20180301050630663会自然排在20180301050630664前面,完美匹配你的排序需求。明确指定列排序(更严谨):如果担心后续列位置变化,或者想明确指定按第一列的时间戳排序,可以指定分隔符和排序列:
sort -t ',' -k 1,1 input.csv > sorted.csv参数说明:
-t ',':指定每行的字段分隔符为逗号-k 1,1:表示仅基于第1列进行排序,避免其他列的内容干扰
稳定排序(保留重复时间戳的原顺序):如果文件中有相同时间戳的行,你希望保持它们在原文件中的先后顺序,可以添加
-s参数启用稳定排序:sort -s -t ',' -k 1,1 input.csv > sorted.csv-s参数会让sort在遇到相同排序键的行时,保留它们在输入文件中的原始顺序。
小提示
如果你的文件体积较大,不用担心内存问题,sort默认会自动使用临时文件处理大文件;如果想要直接覆盖原文件(记得先备份!),可以用-o参数指定输出文件:
sort -o input.csv input.csv
内容的提问来源于stack exchange,提问作者mynameisJEFF
相关产品推荐
相关产品推荐

