gpt4 book ai didi

Awk 或 sed 在 mac 地址中添加缺失的零

转载 作者:行者123 更新时间:2023-12-02 07:16:39 26 4
gpt4 key购买 nike

我有一个由 IP 和 MAC 地址对组成的文件,我需要在每个八位字节中用零填充 MAC 地址,但我不想更改 IP。所以这...

10.5.96.41 0:0:e:4c:b7:42
10.5.96.42 c4:f7:0:13:ef:32
10.5.96.43 0:e8:4c:60:2b:42
10.5.96.44 0:6a:bf:b:35:f1

应该改成这个...

10.5.96.41 00:00:0e:4c:b7:42
10.5.96.42 c4:f7:00:13:ef:32
10.5.96.43 00:e8:4c:60:2b:42
10.5.96.44 00:6a:bf:0b:35:f1

我尝试了 sed 's/\b\(\w\)\b/0\1/g' 但结果是:

10.05.96.41 00:00:0e:4c:b7:42
10.05.96.42 c4:f7:00:13:ef:32
10.05.96.43 00:e8:4c:60:2b:42
10.05.96.44 00:6a:bf:0b:35:f1

这是不需要的,因为我只想影响 MAC 地址部分。

最佳答案

由于您标记了 macos,我不确定这是否适合您。我在 GNU awk

上测试了它
$ awk '{gsub(/\<[0-9a-f]\>/, "0&", $2)} 1' ip.txt
10.5.96.41 00:00:0e:4c:b7:42
10.5.96.42 c4:f7:00:13:ef:32
10.5.96.43 00:e8:4c:60:2b:42
10.5.96.44 00:6a:bf:0b:35:f1

awk 擅长字段处理,这里可以简单的只对第二个字段进行替换

但是,我在你的 sed 命令中看到了 \b\w,所以你使用的是 GNU sed?如果是这样,

sed -E ':a s/( .*)(\b\w\b)/\10\2/; ta' ip.txt


使用 perl

$ perl -lane '$F[1] =~ s/\b\w\b/0$&/g; print join " ", @F' ip.txt
10.5.96.41 00:00:0e:4c:b7:42
10.5.96.42 c4:f7:00:13:ef:32
10.5.96.43 00:e8:4c:60:2b:42
10.5.96.44 00:6a:bf:0b:35:f1

如果您想冒险,请指定您要避免替​​换第一个字段:

perl -pe 's/^\H+(*SKIP)(*F)|\b\w\b/0$&/g' ip.txt

关于Awk 或 sed 在 mac 地址中添加缺失的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61346777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com