检查第一列是否有4位数字,如果没有填充零

时间:2019-11-13 17:41:00

标签: bash awk

我想检查第一列是否有4位数字,如果没有,请在前面加上0,以便所有数字都应为4位数字(使用awk,bash等):

T12FT 19/11/19 2000 
T12FT 18/12/19 2040 

T5 19/11/19 2000 
T5 18/12/19 2080 

T0015 19/11/19 2050 
T0015 18/12/19 2060 

我想得到以下输出:

T0012FT 19/11/19 2000 
T0012FT 18/12/19 2040 

T0005 19/11/19 2000 
T0005 18/12/19 2080 

T0015 19/11/19 2050 
T0015 18/12/19 2060 

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您可以使用sed来做到这一点:

sed -E '
    s/[[:digit:]]/000&/
    s/[[:digit:]]*([[:digit:]]{4})/\1/
' infile

第一个替换项在行的第一个数字前插入000,因此中间状态为

T00012FT 19/11/19 2000 
T00012FT 18/12/19 2040 

T0005 19/11/19 2000 
T0005 18/12/19 2080 

T0000015 19/11/19 2050 
T0000015 18/12/19 2060

然后第二个替换保留第一组数字的最后四位数字:

T0012FT 19/11/19 2000 
T0012FT 18/12/19 2040 

T0005 19/11/19 2000 
T0005 18/12/19 2080 

T0015 19/11/19 2050 
T0015 18/12/19 2060