繁体   English   中英

如何获得包含带有sed或awk的MAC地址的字段号?

[英]How can I get the field number that contains a MAC address with sed or awk?

我正在尝试获取包含某种模式的字段编号(在本例中为MAC地址)。 想象我们有这样的事情:

AAA BBB CCC xx:xx:xx:xx:xx:xx EEE FFF GGG

其中xx:xx ...是MAC地址,因此x是字母数字。

如果使用该行作为输入,我想获取MAC地址所在的字段的编号。 在这种情况下,为“ 4”。

我当时在想sed或awk,但不知道如何输出字段号。

使用NF循环场

使用for循环使用正则表达式检查每个字段,将POSIX字符类用于十六进制数字。 找到匹配项时,打印匹配的字段号。

echo 'AAA BBB CCC 00:00:00:00:00:00 EEE FFF GGG' |
    awk '{ for (i=1; i<=NF; i++)
               if ($i ~ /^([[:xdigit:]]{2}:){5}[[:xdigit:]]$/)
                   print i
                   next
         }'
4

sed可以工作:

echo YOUR_STRING | sed -n 's/.*\([a-zA-Z0-9]\{2\}\(:[a-zA-Z0-9]\{2\}\)\{5\}\).*/\1/p' 

例:

echo abc ab:ab:ab:ab:ab:ab abc | sed -n 's/.*\([a-zA-Z0-9]\{2\}\(:[a-zA-Z0-9]\{2\}\)\{5\}\).*/\1/p'

ab:ab:ab:ab:ab:ab

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM