Open1

ufwの特定の文字列を含むルールを一括削除する方法

慎ちゃん♪慎ちゃん♪

探しても意外と見つからないので考えてみた
もっといい方法ご存知の方教えてください

for i in $(sudo ufw status | grep "Anywhere" | grep -oP "\b\d{1,4}(\.|:).+(?=/tcp)"
); do sudo ufw --force delete allow from $i proto tcp; done

一応解説すると

sudo ufw status | grep "Anywhere"

ufw statusの結果からAnywhereを含む行を抽出し、

| grep -oP "\b\d{1,4}(\.|:).+(?=/tcp)"

Perl構文の正規表現で
\b 単語の境界が
\d 数値を {1,4}1回以上4回以下繰り返し (.|:) . または : .+ 任意の文字を1回以上繰り返し (?=/tcp)直後の文字列が/tcp(ただし/tcpは含まない)