Regex 如何使用一个有效的命令在OpenWrt上安装所有与iptables相关的包?

Regex 如何使用一个有效的命令在OpenWrt上安装所有与iptables相关的包?,regex,linux,iptables,openwrt,Regex,Linux,Iptables,Openwrt,在OpenWrt 10.03.1-RC6上,以下命令安装iptables: opkg update && grep -e "Package: iptables-mod-" -e "Package: kmod-ipt-" -e "Package: kmod-nf" -e "Package: .*nfnetlink" -e "Package: .*netfilter" -e "Package: .*iptables" /var/opkg-lists/packages | awk -F

在OpenWrt 10.03.1-RC6上,以下命令安装iptables:

opkg update && grep -e "Package: iptables-mod-" -e "Package: kmod-ipt-" -e "Package: kmod-nf" -e "Package: .*nfnetlink" -e "Package: .*netfilter" -e "Package: .*iptables" /var/opkg-lists/packages | awk -F ': ' '{print $2}' | xargs opkg install

如何使此命令更紧凑?(例如使用正则表达式。)

您可以将grep命令完全替换为此grep命令:

grep -E "Package: ((iptables-mod-|kmod-(ipt-|nf))|.*(nfnetlink|netfilter|iptables))" /var/opkg-lists/packages
E选项指定grep使用扩展正则表达式。我使用的扩展正则表达式的功能是:

(c|b)at 
这与“cat”或“bat”匹配,即只选择圆括号中的一个选项。因此,在您的情况下,grep命令将匹配

  • 包装:iptables mod-
  • 包装:kmod ipt-
  • 包装:kmod nf
  • 包:*nfnetlink
  • 包:*netfilter
  • 包:.*iptables

为了更好地了解正则表达式,请将其用作参考。正则表达式构成了grep、sed、awk、find和许多其他UNIX命令的基础。因此,如果您对正则表达式有很好的掌握,这是一个很大的优势。享受吧

第二个引号位于错误的位置。