gpt4 book ai didi

linux - 如何将文件的日期列转换为用户输入格式

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:55 25 4
gpt4 key购买 nike

我有一个文件,它有 7 列并且缺少原始数据,它的日期列格式和日期列数是动态的,可能是一列或两列或三列,日期格式是 DD-MON-YYYY HH24:MIDD-MM-YYYY HH:MIDD/MON/YYYY HH:MI 等。

文件.txt

OIEX19|BANG37748|DEL37728|WUBXDE|200010291010|201209111625|195210290000
SEETA7|CHA38228|DEL37728|DGSDFE|201211190705|201308071912|195210291010
PRIYS3|ANK37748|DEL37728|KEJRSRC|196004080910|201407061815|195210292110

上面第5列和第7列是日期列

用户输入的日期格式是DD-MON-YYYY HH:MI

期望的输出:

文件.txt

OIEX19|BANG37748|DEL37728|WUBXDE|29-10-2000 10:10 AM|201209111625|29-10-1952 12:00 AM
SEETA7|CHA38228|DEL37728|DGSDFE|19-11-2012 07:05 PM|201308071912|29-10-1952 10:10 PM
PRIYS3|ANK37748|DEL37728|KEJRSRC|08-04-1960 09:10 AM|201407061815|29-10-1952 9:10 PM

如何使用 awk 实现它?

最佳答案

这个 gawk 单行代码会将您的日期($5 和 $7)转换为 DD-MON-YYYY HH24:MI 格式:

 awk 'BEGIN{FS=OFS="|";re="^(....)(..)(..)(..)(..)$";rep="\\3-\\2-\\1 \\4:\\5"}
{$5=gensub(re, rep,"g",$5);$7=gensub(re,rep,"g", $7)}7' file

以您的数据作为输入,它输出:

OIEX19|BANG37748|DEL37728|WUBXDE|29-10-2000 10:10|201209111625|29-10-1952 00:00
SEETA7|CHA38228|DEL37728|DGSDFE|19-11-2012 07:05|201308071912|29-10-1952 10:10
PRIYS3|ANK37748|DEL37728|KEJRSRC|08-04-1960 09:10|201407061815|29-10-1952 21:10

请注意您输入的第 2 行,我不知道您如何将 201211190705 确定为 07:05 PM。还有 195210291010 作为 10:10 PM。在我的代码中,我只是假设他输入的是 HH24 格式。

关于linux - 如何将文件的日期列转换为用户输入格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36861983/

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