如何打印与文本匹配的行,打印下一行,然后再次匹配下一行中的另一个文本,所有这些都在文本文件中?

如何打印与文本匹配的行,打印下一行,然后再次匹配下一行中的另一个文本,所有这些都在文本文件中?

我想通过获取 Tor 出口节点的指纹(不是 IP,因为 Tor 不允许显式选择 IPv6 地址)来生成具有 IPv6 连接的 Tor 出口节点列表。

在(Tor 的)文本文件中我有这样的行

a [2602:fc05::223]:443
m zBBa795v7+KnW1qZP1pK0ZBtxRHQfhHlkJpe/Yh9ok8
s Exit Fast HSDir Running Stable V2Dir Valid

我想要做的是打印与 a 匹配的文本文件的所有行'['(表示 IPv6 地址),打印下一行(带有 Tor 出口节点指纹的行),并再次匹配包含文本的下一行'退出'(拾取所有退出节点)。正如我上面发布的那样,它用于打印行。

我怎样才能做到这一点?

答案1

珀尔

perl -ne '$f=1 if /\[/; print if $f; $f=0 if /Exit/' infile

awk

awk '/\[/ { f=1 } f { print } /Exit/ { f=0 }' infile

相关内容