如何用正则提取含指定键值对的OpenWRT无线配置段?
提取OpenWRT无线配置中指定SSID的config段
要精准提取包含SSID为5G的config wifi-iface配置段,你之前的正则问题在于没有限定匹配的是config wifi-iface开头的段,且终止条件的空行匹配不够严谨。可以用以下命令实现:
提取完整配置段
grep -Pzo '(?s)^config wifi-iface.*?option ssid "5G".*?(?=\n\n|\Z)' /etc/config/wireless
参数与正则说明:
-z:将换行符视为普通字符,同时用NUL分隔匹配结果,保留段内格式(?s):开启单行模式,让.能匹配换行符^config wifi-iface:精准匹配目标配置段的开头,避免误匹配其他类型的config段(比如wifi-device).*?option ssid "5G":非贪婪匹配到包含指定SSID的行.*?(?=\n\n|\Z):非贪婪匹配到下一个空行或文件结尾,确保只截取当前目标配置段
直接提取对应的device字段
如果不需要完整配置段,只想拿到对应的device值,可以在匹配后用awk过滤:
grep -Pzo '(?s)^config wifi-iface.*?option ssid "5G".*?(?=\n\n|\Z)' /etc/config/wireless | awk '/option device/ {print $3}'
内容的提问来源于stack exchange,提问作者braniac ba
相关产品推荐
相关产品推荐

