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