我有一个像
这样的行列表50000
12345
2345
12341
3456
我想在开头将一个字符0附加到只有4个字符的行,这样结果就是这样的
50000
12345
02345
12341
03456
我怎样才能有效地做到这一点。不要让我使用循环。有什么用awk。
答案 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)==4
。 0
允许我们按原样打印不符合我们条件的行。