我有一个大的txt文件空间分隔,我将其拆分为18个较小的文件(每个文件都有自己的列数)。这种分割基于分隔符,即每当时间戳到达午夜时。如此有效,我最终将以18个文件的形式结束(注意,忽略破折号和管道,我用它们来提高可读性):
file1
time ----------- valueA - valueB
12:00:00 AM | 54.13 | 239.12
12:00:01 AM | 51.83 | 119.93
..
file18
time ---------- valueA - valueB - valueC - valueD
12:00:00 AM | 54.92 | 239.12 | 231.23 | 882.12
12:00:01 AM | 23.92 | 121.92 | 201.23 | 892.12
..
一旦我拆分文件,然后使用AWK对每个文件执行一些处理,所以简而言之,“拆分阶段”和“处理阶段”分为2个阶段。
不幸的是,大型txt文件中包含的时间戳是2种格式之一。优选的24小时格式“00:00:01”或不合需要的12小时格式“12:00:01 AM”。
因此,我正在尝试将所有格式转换为24小时,我不知道该怎么做。我也不确定是使用bash在分裂阶段还是在使用AWK的过程阶段尝试此操作。我知道以下功能将12小时转换为24小时
'date --date="12:00:01 AM" +%T'
然而,我不知道如何将这个结合到我的shell脚本中我是在'拆分阶段'使用'读取行'时是否应该在AWK中进行时间转换(如果可能的话?)at '处理阶段'。
答案 0 :(得分:3)
请参阅下面的测试,对您有帮助吗?
kent$ echo "12:00:00 AM | 54.92 | 239.12 | 231.23 | 882.12 "\
|awk -F'|' 'BEGIN{OFS="|"}{("date --date=\""$1"\" +%T") |getline $1;print }'
<强>输出强>
00:00:00| 54.92 | 239.12 | 231.23 | 882.12