gpt4 book ai didi

linux - 使用 awk 重新格式化日期时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:40 28 4
gpt4 key购买 nike

我有一个包含这样行的文件:

2012/04/08 15:00,207
2012/04/08 16:00,180

我想格式化日期,使文件看起来像这样:

08/04/2012 15:00,207

Awk 似乎是正确的工具,但我无法使用它来正确捕获组。我尝试了类似以下的操作 ( Use sed or awk to fix date format ):

awk '
开始 { FS = OFS = ","}
{ 分割($1,日期,/\//)
$1 = 日期[3] "-"日期[2] "-"日期[1] ""日期[4]
打印 $0
}
' $FILE

但它给我留下了这样的数据:

08 15:00-04-2012,207

Awk 的拆分显然是将时间解释为日期字符串的年份字段的一部分,而且我似乎找不到单独拆分它的方法。我在拆分定界符字段中尝试了许多不同的东西,例如冒号或转义空格,但都给出了语法错误。查看了 awk split 的文档,但没有受到启发。

最佳答案

$ awk '{split($1,date,"/"); print date[3] "/" date[2] "/" date[1], $2}' file
08/04/2012 15:00,207
08/04/2012 16:00,180

仅供引用,对于捕获组,有 GNU awk 或 sed 的替代方案:

$ awk '{print gensub(/(....)\/(..)\/(..)/,"\\3/\\2/\\1",1)}' file
08/04/2012 15:00,207
08/04/2012 16:00,180

$ awk 'match($0,/(....)\/(..)\/(..)(.*)/,a){ print a[3]"/"a[2]"/"a[1] a[4] }' file
08/04/2012 15:00,207
08/04/2012 16:00,180

$ sed -r 's#(....)/(..)/(..)#\3/\2/\1#' file
08/04/2012 15:00,207
08/04/2012 16:00,180

关于linux - 使用 awk 重新格式化日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527405/

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