将hh:mm:s转换为hh:mm:ss



我正在尝试排序一个两列列表,其中第二列的时间为hh:mm:s使用sort -k2例如

peer0 23:51:3
peer1 23:51:18
peer2 23:51:15

得到

peer1 23:51:18
peer0 23:51:3
peer2 23:51:15

最有可能的一个问题是,在几秒钟内,3之前缺少0。知道怎么加这个吗?

谢谢

sort的一些实现(例如来自GNU coreutils的实现)提供版本排序(-V),它将1:3排序在1:30之前。

sort -k2,2V

如果你的sort没有这个,数字(-n)按单个时间组件排序。如果你有时间,那就是sort -t: -n。但是,由于您有空格分隔的列和冒号分隔的时间组件,因此需要进行一些预处理和后处理。

如果你的数据不包含:,你可以使用

< yourFile tr ' ' ':' | sort -t: -n -k2,2 -k3,3 -k4,4 | sed 's/:/ /'

您可以使用awk:

#!/bin/bash
data='23:51:3
23:51:18
23:51:15
'
echo "$data" | awk -F':' -v OFS=':' '{ if (length($3) == 1) $3="0"$3; print }' | sort -t: -k2 

相关内容

  • 没有找到相关文章

最新更新