在某些文本中,我有一系列不同长度(从1到6位数不等).我想通过用零填充较短的数字来均衡所有这些数字的长度.
例如以下4行 -
A1:11
A2:112
A3:223333
A4:1333
A5:19333
A6:4
Run Code Online (Sandbox Code Playgroud)
应该成为填充整数
A1:000011
A2:000112
A3:223333
A4:001333
A5:019333
A6:000004
Run Code Online (Sandbox Code Playgroud)
我正在使用"sed"和以下的精简表达式:
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/'
Run Code Online (Sandbox Code Playgroud)
是否有可能以比这更好的表达方式做到这一点?
Mar*_*ers 31
你可以用太多的零填充它,然后只保留最后六位数:
sed -e 's/:/:00000/;s/:0*\([0-9]\{6,\}\)$/:\1/'
Run Code Online (Sandbox Code Playgroud)
结果:
A1:000011 A2:000112 A3:223333 A4:001333 A5:019333 A6:000004
尽管使用awk可能更好:
awk -F: '{ printf("%s:%06d\n", $1, $2) }'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17618 次 |
| 最近记录: |