日志文件中的日期字符串列到时间戳列

日志文件中的日期字符串列到时间戳列

我有log.txt这样的示例输出:

...
10-Feb-2022 15:15:14.099 lorem
10-Feb-2022 15:15:15.133 ipsum
10-Feb-2022 15:15:16.233 dolor
...

我预计过滤后的 log.txt 的输出将是

...
1644480914 lorem
1644480915 ipsum
1644480916 dolor
...

我已经弄清楚如何将日期字符串转换为时间戳

date --date='10-Feb-2022 15:15:14.099' +"%s"
Output:
1644480914

我的大脑仍然不明白如何将该日期命令应用于 log.txt。

另外我如何管道该日期命令?

printf "10-Feb-2022 15.15.17.012 water" | date --date=<what must i put here?> + "%s"

我期望流水线命令的输出是相同的,不同的是不干扰其他列,即1644480917 water

答案1

您的date命令似乎允许选择-d传达日期/时间。尝试像

cut -d' ' -f-2 file | date +%s -f- | paste -d' ' - file | cut -d' ' -f1,4-
1644502514 lorem
1644502515 ipsum
1644502516 dolor

cut是输入中的日期/时间字段,date通过-f(读取 DATEFILE)选项将它们提供给命令,paste将其返回到输入文件,并cut输出旧的日期/时间字段。

相关内容