我使用的是MacOS,要对其进行管理,只希望通过使用grep列表来获得
接口名称和macaddress
lo0 ether 00:00:00:00:00:00
gif0 ether 00:00:00:00:00:00
stf0 ether 00:00:00:00:00:00
en0 ether 00:00:00:00:00:00
en5 ether 00:00:00:00:00:00
en1 ether 00:00:00:00:00:00
en2 ether 00:00:00:00:00:00
en3 ether 00:00:00:00:00:00
en4 ether 00:00:00:00:00:00
utun0 ether 00:00:00:00:00:00
我尝试过广告,尝试过一些我写过的命令,我能做的最好的是:
ifconfig | echo `grep -oE '^[a-zA-Z]{1,4}[0-9]{1,4}'`
output:
lo0 gif0 stf0 en0 en5 en1 en2 en3 en4 utun0
有人为我准备好了吗?
一个简单的Perl脚本可以读取ifconfig
的输出。我们将实例名称($inst
)定义为以一行开头,以冒号和一个或多个空格结尾的字符。符合此条件的匹配将被保存,并且读取循环继续。当一行以一个或多个空格开头并且遇到令牌ether
时,我们将打印实例名称和刚刚读取的行。
ifconfig|perl -ne 'if (m/^(.+):\s+/) {$inst=$1};if (m{^\s+ether}) {print $inst,$_}'
en0 ether 34:15:9e:23:7b:78
en1 ether 7c:6d:62:73:ff:4e
p2p0 ether 0e:6d:62:73:ff:4e
如果坚持仅grep
解析,将产生粗略的提取,然后可以对其进行进一步处理:
ifconfig|grep -Eo '^[0-9a-z]+:|ether.+'|grep -B1 -Eo 'ether.+'|grep -v -- "--"|paste - -
en0: ether 34:15:9e:23:7b:78
en1: ether 7c:6d:62:73:ff:4e
p2p0: ether 0e:6d:62:73:ff:4e
这可能会使您更接近一点:
grep -o '\b[0-9a-z:]*[0-9]\b'
但是输出中包含新行:
lo0
00:00:00:00:00:00
gif0
00:00:00:00:00:00
stf0
00:00:00:00:00:00
en0
00:00:00:00:00:00
en5
00:00:00:00:00:00
en1
00:00:00:00:00:00
en2
00:00:00:00:00:00
en3
00:00:00:00:00:00
en4
00:00:00:00:00:00
utun0
00:00:00:00:00:00
但是,如果允许使用xargs,则可以得到一个界面和mac都在同一行的解决方案:
grep -o '\b[0-9a-z:]*[0-9]\b' | xargs -L2
lo0 00:00:00:00:00:00
gif0 00:00:00:00:00:00
stf0 00:00:00:00:00:00
en0 00:00:00:00:00:00
en5 00:00:00:00:00:00
en1 00:00:00:00:00:00
en2 00:00:00:00:00:00
en3 00:00:00:00:00:00
en4 00:00:00:00:00:00
utun0 00:00:00:00:00:00
grep正在寻找包含数字的字符串。因此,以太币从匹配的字符串中省略了。当然,这不是一个非常通用的解决方案。
当然,如果您要使用Shell替代反向tic(或更好的$()
::
ifconfig | echo $( grep -o '\b[0-9a-z:]*[0-9]\b' )