将前导 0 添加到 bash 中的 mac 地址

Add leading 0 to mac address in bash

我正在 bash 上编写脚本以从一组设备中读取 MAC 地址,但我被一个开关卡住了 returns 地址不带前导 0。对于实例:

0:A:B:11:22:C -> 那就是 -> 00:0A:0B:11:22:0C

正则表达式是否可以添加这些前导零?我可以分别获取每个地址,获取其字节并进行调整,但我想知道是否有更简单的方法。

你可以使用 sed。 \b 单词字符和非单词字符之间的匹配。因此 \b\(\w\)\b 捕获具有单个单词字符的子字符串。

sed 's/\b\(\w\)\b/0/g' file

示例:

$ echo '0:A:B:11:22:C' | sed 's/\b\(\w\)\b/0/g'
00:0A:0B:11:22:0C

下面是使用 readprintf 内置函数在 BASH 中执行此操作的方法:

s='0:A:B:11:22:C'
IFS=: read -ra arr <<< "$s"
printf -v str "%02s:" "${arr[@]}"
echo "${str%:}"
00:0A:0B:11:22:0C