0

我有格式的 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?

4

1 回答 1

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\36.5.2013

于 2013-06-17T15:24:03.653 回答