gpt4 book ai didi

linux - bash 将奇数日期格式转换为 linux 日期识别的更有效方法

转载 作者:行者123 更新时间:2023-12-05 09:28:08 25 4
gpt4 key购买 nike

这是我拥有的一堆文件中的日期格式

$cat ./file.log
20220405T130001 message1
20220405T130002 message2
20220405T130003 message3
20220405T130004 message4
20220405T130005 message5

我可以通过这样做将它转换为可用的日期格式:

$cat ./file.log | sed 's/^\(.\{4\}\)/\1-/' | sed 's/^\(.\{7\}\)/\1-/' | sed 's/\(.\{10\}\)./\1 /' |  sed 's/^\(.\{13\}\)/\1:/' | sed 's/^\(.\{16\}\)/\1:/
2022-04-05 13:00:01 message1
2022-04-05 13:00:02 message2
2022-04-05 13:00:03 message3
2022-04-05 13:00:04 message4
2022-04-05 13:00:05 message5

这看起来效率很低。在 bash 中是否有更简单/更好的方法来完成此操作?

要改变的规则如下

  • 在前 4 个字符后插入 -
  • 在上一条规则后的下两个字符后插入-
  • 在上一条规则后的下两个字符后插入-
  • T 替换为 在前一个规则之后的下两个字符之后
  • 插入:在前一个规则之后的下两个字符之后
  • 插入:在前一个规则之后的下两个字符之后

最佳答案

假设您总是在输入文件中获得相同的格式,单个 sed 可以处理多个捕获组:

sed -E 's/^(.{4})(..)(..)T(..)(..)/\1-\2-\3 \4:\5:/' file

2022-04-05 13:00:01 message1
2022-04-05 13:00:02 message2
2022-04-05 13:00:03 message3
2022-04-05 13:00:04 message4
2022-04-05 13:00:05 message5

关于linux - bash 将奇数日期格式转换为 linux 日期识别的更有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71752942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com