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

时间:2011-12-22 20:01:45

标签: regex linux iptables openwrt

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以通过此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

要更好地了解正则表达式,请使用http://www.grymoire.com/Unix/Regular.html作为参考。正则表达式构成了grep,sed,awk,find和许多其他UNIX命令的基础。因此,如果您掌握了正则表达式,那么这是一个很大的优势。享受!