如何使用bash在txt文件中重新格式化日期

时间:2019-07-08 14:39:24

标签: bash

我有一个很长的txt文件t1.txt。例如,我有以下文本:

"2019-03-11T12:20:22.330Z"
plenty of text ...
"2019-03-11T12:20:43.082Z"
plenty of text ...

我想重新格式化日期戳,使其类似于

Day of the week
time (as in 13.48 for example)
plenty of text ...

这完全可以用bash做到吗?

1 个答案:

答案 0 :(得分:2)

抢救Perl:

perl -MTime::Piece -pe 's/^"([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2})\.[0-9]+Z"$/
    Time::Piece->strptime($1, "%Y-%m-%dT%H:%M:%S")->strftime("%A\n%H:%M")
/e' -- t1.txt
  • -p逐行读取输入并在处理后打印每一行
  • -M使用一个模块,Time::Piece是处理基本时间解析和格式化的核心模块
  • s/PATTERN/REPLACEMENT/是类似于sed的替代
  • 替换中的
  • /e修饰符将REPLACEMENT部分解释为代码并运行它
  • strptime解析时间,格式详细信息可以在man strptime
  • 中找到
  • strftime格式化时间,其中%A是全日名称,\n是换行符,%H代表小时,%M代表分钟< / li>