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