带空格的 Grep 表达式 - BASH

带空格的 Grep 表达式 - BASH

我想 grepACCEPT, DROP, REJECT如下所示。

-P INPUT ACCEPT
-P OUTPUT DROP
-P FORWARD REJECT

我执行了

iptables -S | grep -E '\-P INPUT|\-P OUTPUT|\-P FORWARD' | awk '{print $2}'

我的输出看起来像这样

INPUT
OUTPUT
FORWARD

有人知道如何只 grep 吗ACCEPT, DROP, REJECT?我只想在内置链中使用 grep 策略。在内置链下面我得到了用户的链不能与结果相关联。

谢谢你,米

答案1

无论如何,没有理由调用grepif :awk

iptables -S | 
  awk '/^-P INPUT/ {INPUT=$3}; /^-P FORWARD/ {FORWARD=$3}; /^-P OUTPUT/ {OUTPUT=$3}; 
  END {print INPUT; print FORWARD; print OUTPUT;}'

答案2

你很接近。如果您需要整条线:

iptables -S | grep -- "-P" | grep -E "ACCEPT|DROP|REJECT"

输出

-P INPUT ACCEPT
-P OUTPUT DROP
-P FORWARD REJECT

如果您只需要匹配的单词:

iptables -S | grep -- "-P" | grep -oE "ACCEPT|DROP|REJECT"

输出

ACCEPT
DROP
REJECT

相关内容