首页 > 解决方案 > 检查第一列是否有 4 位数字,如果不是用零填充

问题描述

我想检查第一列是否有 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 

我怎样才能做到这一点?

标签: bashawk

解决方案


你可以用 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

推荐阅读