bash - 检查第一列是否有 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
我怎样才能做到这一点?
解决方案
你可以用 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
推荐阅读
- javascript - 在javascript中修改并写入输入的html值
- regex - 正则表达式/记事本++从文件中提取文本
- python - 有没有办法使用for循环让每个LED在按下按钮时闪烁?
- rest-assured - 如何配置 RestAssured http 客户端以使用 socks 代理?
- javascript - Jest 测试创建空的 blob 对象
- javascript - 用axios调用api
- javascript - Socket.IO - 通过 Mysql chat_id 创建房间
- javascript - 补丁方法是覆盖整个文档而不是只替换更改的字段
- python - 为所有玩家热图数据刮取沙发分数
- iis - 在 IIS 池标识上使用 gMSA 时遇到问题