簡體   English   中英

使用 grep 在 MacOs ifconfig 上只有接口名稱和 MAC 地址

[英]Using grep to have only interface name and MAC address over MacOs ifconfig

我正在使用 MacOS 並管理它只想通過使用 grep 列表來獲取

接口名稱和 mac 地址

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 正在尋找一個包含數字的字符串。 因此,ether 從匹配的字符串中省略。 當然,這不是一個非常通用的解決方案。

當然,如果您想使用 shell 替換 back tic(或更好的$() ):

 ifconfig | echo $( grep -o '\b[0-9a-z:]*[0-9]\b'  )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM