Regex 使用perl替换文本字符串中的单位时间戳

Regex 使用perl替换文本字符串中的单位时间戳,regex,perl,unix-timestamp,Regex,Perl,Unix Timestamp,好的,我有一个包含两列数据的数据文件。它们是记录编号和注释。它们被管道隔开,看起来像这样 Record1|1234567890 username notes notes notes notes 1254184921 username notes notes notes notes| 。。。这种情况持续了数千条记录 使用一个perl脚本和一些可能的正则表达式,我需要获取notes列并对其进行解析,以生成3个新的列,这些列用管道分隔,然后加载到一个表中。列需要是Note|u Date | Note

好的,我有一个包含两列数据的数据文件。它们是记录编号和注释。它们被管道隔开,看起来像这样

Record1|1234567890 username notes notes notes notes 1254184921 username notes notes notes notes|
。。。这种情况持续了数千条记录

使用一个perl脚本和一些可能的正则表达式,我需要获取notes列并对其进行解析,以生成3个新的列,这些列用管道分隔,然后加载到一个表中。列需要是Note|u Date | Note|u Username | Note|u Text

整个notes列中的10位数字字符串是unix时间戳。我的第二个任务是将其转换为常规时间戳。请,任何帮助都将不胜感激


谢谢。

您可能需要根据需要修改此选项:

use strict;
use warnings;

while (<>) {
        my @a = split(/\|/);
        while ($a[1]=~/\s*(\d+)\s+(\w+)\s+([^0-9]*)/g) {
                my ($t, $u, $n) = ($1, $2, $3);
                $t = localtime($t);
                print $a[0], "|$t $u $n|\n";
        }
}

这就是确切的数据格式吗?为什么在第一条记录之前有一条记录1 |,而在第二条和后续记录之前没有?除了一个简单的空格字符外,是否还有一个换行符或其他分隔记录的东西?最后,到目前为止,您想到了什么?您陷入了什么困境?如果有一些真实的样本数据可供测试,这总是很好的。您是否有可能提供一些?您正在累积投票,以结束投票,因为您不想帮助我们帮助您。如果你想第二次回来寻求帮助,这对你没有帮助暴徒-我真的不知道从哪里开始David0-没有记录的原因2是因为这是一个记录上有多个注释的例子Borodin-对不起,我忙着工作,没有时间坐下来盯着这个页面看更新。