2011-12-22 2 views
-1

На OpenWRT 10.03.1-RC6 следующая команда устанавливает IPtables материал:Как установить все связанные с iptables пакеты на OpenWrt с помощью одной эффективной команды?

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 

Как я могу сделать эту команду более компактно? (. Например, с регулярными выражениями)

ответ

0

Вы можете заменить команду Grep полностью с помощью этой команды Grep:

grep -E "Package: ((iptables-mod-|kmod-(ipt-|nf))|.*(nfnetlink|netfilter|iptables))" /var/opkg-lists/packages 

Опция -E указывает Grep использовать расширенные регулярные выражения. Особенность расширенных регулярных выражений Я использую это:

(c|b)at 

Это соответствует «кошка» или «битой» то есть только один из вариантов в круглых скобках выбираются. Так что в вашем случае команда Grep будет соответствовать

  • Пакет: Iptables-модулирования
  • Пакет: kmod-ipt-
  • Пакет: kmod нФ
  • Пакет:. * Nfnetlink
  • Пакет :. * Netfilter
  • Пакет:. * Iptables

Чтобы получить лучшее знание регулярных выражений, пожалуйста, используйте http://www.grymoire.com/Unix/Regular.html в качестве справки. Регулярные выражения составляют основу grep, sed, awk, find и многих других команд UNIX. Таким образом, это большое преимущество, если вы хорошо разбираетесь в регулярных выражениях. Наслаждайтесь!

+0

Вторая кавычка находится в неправильном месте. – dash17291

+0

исправлено. спасибо @ dash17291 –