17
我在一些文本中有一系列不同长度的数字(从1到6位数)。我想通过用零填充较短的数字来平衡所有这些数字的长度。是否可以使用正则表达式填充零的整数?
E.g.下面的4行 -
A1:11
A2:112
A3:223333
A4:1333
A5:19333
A6:4
应该成为填充整数
A1:000011
A2:000112
A3:223333
A4:001333
A5:019333
A6:000004
我使用 “的sed” 和combersome表达如下:
sed -e 's/:\([0-9]\{1\}\)\>/:00000\1/' \
-e 's/:\([0-9]\{2\}\)\>/:0000\1/' \
-e 's/:\([0-9]\{3\}\)\>/:000\1/' \
-e 's/:\([0-9]\{4\}\)\>/:00\1/' \
-e 's/:\([0-9]\{5\}\)\>/:0\1/'
是否有可能做到这一点的比这更好的表达?
也许使用'{6,}'来避免修剪最初长于6的数字? – gnarf 2010-06-25 21:44:58
@gnarf:这不会修剪最初长于6的数字 - 它会填充它们,但无论哪种方式,您的建议都很好,所以我会更新答案。处理它的另一种方法可能是中止脚本。 – 2010-06-25 21:50:30
这是一个sed表达的好主意 - 预填充,然后修剪!这完全符合我的目的。尽管awk在这个例子中会做得很好,但我正在处理的真实数据并不是很清晰。 - 谢谢Mark! – 2010-06-25 21:58:55