根据长度附加一个字符

时间:2014-10-03 00:23:46

标签: awk

我有一个像

这样的行列表
50000
12345
2345
12341
3456

我想在开头将一个字符0附加到只有4个字符的行,这样结果就是这样的

50000
12345
02345
12341
03456

我怎样才能有效地做到这一点。不要让我使用循环。有什么用awk。

2 个答案:

答案 0 :(得分:4)

很有可能建议:

awk '{printf "%05d\n", $1}' file

这会将文件的第一个字段打印为零填充的5位数字。它将处理诸如1,23,456以及2345(产生00001,00023,00456,02345)的输入。但是,它确实假设输入都是数字;例如,如果它们是字母数字字符串,它将无法正常工作。

答案 1 :(得分:3)

您可以使用length()的{​​{1}}功能。

awk

我们使用模式$ awk 'length($0)==4{$0=0 $0}1' file 50000 12345 02345 12341 03456 来检查该行是否长4个字符。如果是,我们会在其前面追加length($0)==40允许我们按原样打印不符合我们条件的行。