csv的特殊时间戳格式

时间:2013-06-17 14:34:43

标签: regex csv notepad++

我有格式的csv时间戳数据:

8.11.2012 16:15:10
21.11.2012 15:00:54
11.11.2012 0:24:24
8.11.2012 16:06:53
9.11.2012 0:49:37

我想在每个格式上应用特殊的时间戳格式,例如不带单个数字:

08_11_2012_16_15_10
21_11_2012_15_00_54
11_11_2012_00_24_24
08_11_2012_16_06_53

我尝试过正则表达式,搜索和替换,但得到了这个:

8_11_2012_16_15_10
21_11_2012_15_00_54
11_11_2012_0_24_24
8_11_2012_16_06_53

有没有人有另一个想法,也许有shell awk?

1 个答案:

答案 0 :(得分:0)

你可以两次通过。查找数据文件中从不出现的字符或短字符序列。我会在这里使用=#=。第一遍与您已经尝试过的非常类似,但在应该转换为两位数字的所有数字之前添加=#=0。因此8.11.2012 16:15:10更改为=#=08_=#=011_2012_=#=016_=#=015_=#=010。第二遍将使用=#=的正则表达式搜索删除=#=0*(\d\d[^\d])和不需要的零,并替换为\0

如果文件只包含日期和时间,那么您可以在执行已尝试的更改之前将前导零添加到文本中。正则表达式搜索\b(\d)\b并替换为0\1会将任何单个数字转换为两位数。请注意,\b(\d)\b不会将_6_视为单个数字,\b搜索字边界,_被视为单词的一部分。尝试搜索([^\d])(\d)([^\d])并替换为\10\2\3不能正常工作,因为它可能无法处理所需的行或文件的开头和结尾,也需要运行两次才能处理6.5.2013 }