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

时间:2015-03-30 12:24:56

标签: regex bash mac-address

我正在用bash编写一个脚本来从一组设备中读取MAC地址,而我却停留了一个返回地址而没有前导0的交换机。例如:

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

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

2 个答案:

答案 0 :(得分:4)

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

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

示例:

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

答案 1 :(得分:0)

以下是使用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
相关问题