在一些文本中,我有一系列不同长度的数字(从1到6位数字).我想通过用零填充较短的数字来平衡所有这些数字的长度.
例如.以下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”和以下combesome表达式:
- 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/'
有可能这样做比这更好吗?
您可以用太多的零填充,然后只保留最后六位数:
- sed -e 's/:/:00000/;s/:0*\([0-9]\{6,\}\)$/:\1/'
结果:
- A1:000011
- A2:000112
- A3:223333
- A4:001333
- A5:019333
- A6:000004
使用awk可能会更好:
- awk -F: '{ printf("%s:%06s\n",$1,$2) }'