我正在用bash编写一个脚本来从一组设备中读取MAC地址,而我却停留了一个返回地址而没有前导0的交换机。例如:
0:A:B:11:22:C - >那将是 - > 00:0A:0B:11:22:0C
正则表达式是否可以添加这些前导零?我可以分别取每个地址,取其字节并进行调整,但我想知道是否有更简单的方法。
答案 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)
以下是使用read
和printf
内置函数在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