bash - 有没有办法在 bash/sh 脚本中格式化字符串中子字符串的宽度?
问题描述
我必须使用 bash 脚本格式化字符串中子字符串的宽度,但不使用标记或循环。两个冒号之间的单个字符应在前面加上 0,以匹配每个字段的标准宽度 2。
例如
从:
6:0:36:35:30:30:72:6c:73:0:c:52:4c:30:31:30:31:30:30:30:31:36:39:0:1:3
至
06:00:36:35:30:30:72:6c:73:00:0c:52:4c:30:31:30:31:30:30:30:31:36:39:00:01:03
我怎样才能做到这一点?
解决方案
sed -r 's/\<([0-9a-f])\>/0\1/g'
搜索并用正则表达式替换。使用\<
and\>
匹配单词边界,因此[0-9a-f]
只匹配单个数字。
$ sed -r 's/\<([0-9a-f])\>/0\1/g' <<< "6:0:36:35:30:30:72:6c:73:0:c:52:4c:30:31:30:31:30:30:30:31:36:39:0:1:3"
06:00:36:35:30:30:72:6c:73:00:0c:52:4c:30:31:30:31:30:30:30:31:36:39:00:01:03
推荐阅读
- swift - RealityKit – 从 Web URL 资源加载 ModelEntity
- java - 以快速的方式将 assertXY 语句从 JUnit4 迁移到 Junit5?
- android - 连接到 Android 10 上的接入点(无互联网)
- flutter - Flutter DropdownMenu未显示所选项目
- python - 为什么我们使用分类数据类型和 cat.codes?
- r - 反转数据框中的列和行
- laravel - 使用 updateExistingPivot 更新数据透视表 - Laravel 8
- flutter - 不能将 ListView 放在 Column 中颤动?
- c# - 如何将两种方法变成一种泛型?
- powershell - Powershell 通过两个值匹配