我正在开发一个 bash 脚本,需要一些复杂的正则表达式的帮助......至少对我来说很复杂!
将卡置于监视模式后,我有一些可能的输出几乎没有变化,并且根据发行版和 aircrack 套件版本,几乎没有变化。我需要解析的一些字符串是:
(mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
(mac80211 monitor mode vif enabled on [phy0]wlan0mon
(monitor mode enabled on wlanmon0)
(monitor mode enabled on wlanmon0
我需要从这些字符串中获取接口的新名称...所以在这种情况下 WLAN0mon,但可以根据卡的不同而有所不同。
如您所见,有时有最后一个括号")",有时没有。有时我有[一些东西],有时没有。我需要从"on"(注意 on 之后的空格)到这些变化的结尾......我有方法,但没有快乐。它仅适用于具有"]"的字符串,并且不知道如何避免所有可能性。
[[ ${new_interface} =~ ^(.*)]+([a-zA-Z0-9]+))?$ ]] && new_interface="${BASH_REMATCH[2]}"
有什么建议吗?谢谢!
这将简单得多
[[ ${new_interface} =~ ]?([A-Za-z0-9]+))?$ ]] && new_interface="${BASH_REMATCH[1]}"
我知道了...绝望让我试...最后,我让它适用于所有变体。这是解决方案:
[[ ${new_interface} =~ ^(.*on[[:space:]])([.*])?([a-zA-Z0-9]+))?$ ]] && new_interface="${BASH_REMATCH[3]}"
干杯。