正则表达式从文件中提取多行

发布于 2025-01-07 18:52:51 字数 258 浏览 1 评论 0原文

如何从给定文件“named.conf”中提取两个字段?我想要“区域”和“文件”字段。

zone "example.com" IN {
        type master;
        file "db.example.com";
        allow-query { any; };
        allow-update { none; };
        allow-transfer { 10.101.100.2; };
};

How can I extract two fields from a given file "named.conf"? I want the fields 'zone' and 'file'.

zone "example.com" IN {
        type master;
        file "db.example.com";
        allow-query { any; };
        allow-update { none; };
        allow-transfer { 10.101.100.2; };
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

红衣飘飘貌似仙 2025-01-14 18:52:51

这可能对你有用:

sed '/^\s*\(zone\|file\) "\([^"]*\)".*/,//!d;//!d;s//\2/' named.conf
example.com
db.example.com

This might work for you:

sed '/^\s*\(zone\|file\) "\([^"]*\)".*/,//!d;//!d;s//\2/' named.conf
example.com
db.example.com
分开我的手 2025-01-14 18:52:51

尝试这个快速& dirty (GNU) AWK 程序(将其另存为 zone-file.awk):

/^zone/, /^}/ {
    if (NF == 4) {
        zone = $2
        next
    }

    if (NF == 2 && $1 == "file") {
        sub(";$", "", $2)
        print zone, $2
    }
}

它对我来说如下:

$ awk -f zone-file.awk /etc/named.conf
"." "named.ca"
"localhost" "localhost.zone"
[...]

Try this quick & dirty (GNU) AWK program (save it as zone-file.awk):

/^zone/, /^}/ {
    if (NF == 4) {
        zone = $2
        next
    }

    if (NF == 2 && $1 == "file") {
        sub(";$", "", $2)
        print zone, $2
    }
}

It works for me as follows:

$ awk -f zone-file.awk /etc/named.conf
"." "named.ca"
"localhost" "localhost.zone"
[...]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文