在小于 4 个符号的每一行的开头添加缺失的零

Mac*_*Mac 1 bash sed awk shell-script

我会问你如何解决这个问题:我需要在单词少于 4 个符号的每一行输入 0。

示例输入文件:

30
1
508
A0EA
A0EB
A0EC
A0ED
Run Code Online (Sandbox Code Playgroud)

期望的输出应该是:

0030
0001
0508
A0EA
A0EB
A0EC
A0ED
Run Code Online (Sandbox Code Playgroud)

非常感谢您的支持。

Sté*_*las 5

您可以为所有行添加 4 个前导零,然后获取每行的最后 4 个字符:

sed 's/^/0000/; s/^.*\(.\{4\}\)/\1/' < file
Run Code Online (Sandbox Code Playgroud)

或者首先避免截断宽度超过 4 位的数字:

sed 's/^/0000/; s/^.\{1,4\}\(.\{4\}\)/\1/' < file
Run Code Online (Sandbox Code Playgroud)