从区域文件中提取行



我有一个DNS区域文件,该文件看起来如下:

record A 1.1.1.1
       A 1.1.1.2
       A 1.1.1.3
other_record A 1.1.1.4
             A 1.1.1.5
another_rec  A 1.1.1.6

我需要提取属于记录的所有行(因此第一个和下面的两条线),而没有其他任何行(实际文件具有更多的记录,例如这样,因此很诱人不是有效的解决方案)。

预期结果:

record A 1.1.1.1
       A 1.1.1.2
       A 1.1.1.3
awk '/^[^[:space:]]/{f = ($1=="record" ? 1 : 0)} f' file

这可能对您有用(gnu sed):

sed '/^record/{:a;n;/^S/Q;ba};d' file

这是在第一次出现record之后终止或:

sed '/^S/h;G;/^record/MP;d' file

这打印所有出现的record

您还可以考虑使用DNS区域文件解析器(如Python等)。

一旦将Zone File Content的句柄作为对象,便可以很容易地按照所需的方式进行操作。

在进行快速网络搜索之后,我得到了这个 - https://github.com/blockstack/zone-file-py。(还有很多其他...您需要查看哪个最适合您)

您可以尝试以下内容,让我知道是否有帮助。

awk '/^[a-z]+/ && !/^record/{flag=""} /^record/{flag=1} flag'  Input_file
awk '!/_/&&NR!=5' file
record A 1.1.1.1
       A 1.1.1.2
       A 1.1.1.3

最新更新