У меня есть строки вроде [17.440000] eth0: XYZCOMPANY ABC4353 802.11 Wireless Controller
[17.540000] eth1: Контроллер беспроводной сети XYZCOMPANY ABC4353 802.11
[17.640000] eth2: Контроллер беспроводной сети XYZCOMPANY ABC4353 802.11
Мне нужно получить eth0, eth1, eth2 в переменную в сценарии оболочки. Как вы можете заметить, все остальные строки, такие как XYZCOMPANY ABC4353, остаются постоянными, но имя интерфейса постоянно меняется. Мне нужно передать имена интерфейсов в переменную.
Спасибо!
Это покажет eth
и wlan
адреса с любым количеством цифр:
var=$(dmesg | grep -Eo '(eth|wlan)[[:digit:]]+')
Если тебе не нужно wlan
вы можете удалить альтернативный. Я не уверен, что eth
драйвер использует шестнадцатеричный формат, но вы можете изменить «цифру» на «xdigit», если это так, и вам нужно разрешить более 10 интерфейсов.
То есть в вашей переменной должно быть что-то вроде "eth0: eth1: eth2"
var=`awk /./'{print $3}' lala `
echo $var
Это решение тоже должно работать:
var=$(dmesg | grep "eth[0-9]: [A-Za-z0-9 ]* 802.11 Wireless Controller" | awk '{ print substr($3,0,5) }')