在Linux上向字符串添加前导零

时间:2014-08-21 06:48:54

标签: linux perl shell awk

我有一个包含名单列表的文件。我需要将名称长度设为11个字符。是否有任何单行命令来完成这项工作?

示例:

FILE1.TXT

ABCDE001
ABCDE002

预期:

FILE1.TXT

000ABCDE001
000ABCDE002

3 个答案:

答案 0 :(得分:4)

以下Perl单线程可以帮助您:

perl -i -pe 's/(\S+)/("0" x (11 - length $1)) . $1/eg' file.txt

<强>开关

  • -i:编辑<>个文件(如果提供了扩展程序,则进行备份)
  • -p:为输入文件中的每个“行”创建一个while(<>){...; print}循环。
  • -e:告诉perl在命令行上执行代码。

答案 1 :(得分:3)

您可以使用awk

awk '{printf "%0"  11-length($0) "d%s\n", 0, $0}' file
000ABCDE001
000ABCDE002

答案 2 :(得分:2)

使用Perl one-liner,

perl -pe 's|(\w+)| sprintf("%011s", $1) |e' file1.txt

添加-i开关以将更改应用于文件。