我有这种格式的mac地址列表:
412010000018
412010000026
412010000034
Run Code Online (Sandbox Code Playgroud)
我想要这个输出:
41:20:10:00:00:18
41:20:10:00:00:26
41:20:10:00:00:34
Run Code Online (Sandbox Code Playgroud)
我试过这个,但没有用:
sed 's/([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/\1:\2:\3:\4/g' mac_list
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
您必须使用正确的sed语法:
\{I\}
matches exactly I sequences (I is a decimal integer;
for portability, keep it between 0 and 255 inclusive).
\(REGEXP\)
Groups the inner REGEXP as a whole, this is used for back references.
Run Code Online (Sandbox Code Playgroud)
以下是涵盖前 2 个字段的示例命令
sed 's/^\([0-9A-Fa-f]\{2\}\)\([0-9A-Fa-f]\{2\}\).*$/\1:\2:/'
Run Code Online (Sandbox Code Playgroud)
以下命令可以处理完整的MAC地址,并且易于阅读:
sed -e 's/^\([0-9A-Fa-f]\{2\}\)/\1_/' \
-e 's/_\([0-9A-Fa-f]\{2\}\)/:\1_/' \
-e 's/_\([0-9A-Fa-f]\{2\}\)/:\1_/' \
-e 's/_\([0-9A-Fa-f]\{2\}\)/:\1_/' \
-e 's/_\([0-9A-Fa-f]\{2\}\)/:\1_/' \
-e 's/_\([0-9A-Fa-f]\{2\}\)/:\1/'
Run Code Online (Sandbox Code Playgroud)
遵循 @Qtax 在此发布的 perl 解决方案的想法并进行全局替换,可以得到一个更短的解决方案:
sed -e 's/\([0-9A-Fa-f]\{2\}\)/\1:/g' -e 's/\(.*\):$/\1/'
Run Code Online (Sandbox Code Playgroud)