-1

在 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

我怎样才能使这个命令更紧凑?(例如使用正则表达式。)

4

1 回答 1

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 命令的基础。因此,如果您对正则表达式有很好的掌握,那将是一个很大的优势。享受!

于 2011-12-23T03:21:08.840 回答