簡體   English   中英

如何使用bash從文件中刪除文本塊

[英]How to remove a text block from a file with bash

我有以下配置的bind配置文件:

zone "domain1.com" {
        type master;
        file "masters/domain1.com";
        allow-transfer {
                dnscontroller_acl;
        };
};


zone "domain2.com" {
        type master;
        file "masters/domain2.com";
        allow-transfer {
                dnscontroller_acl;
        };
};

zone "domain3.com" {
        type master;
        file "masters/domain3.com";
        allow-transfer {
                dnscontroller_acl;
        };
};

zone "domain4.com" {
        type master;
        file "masters/domain4.com";
        allow-transfer {
                dnscontroller_acl;
        };
};

如何在bash的幫助下從文件中刪除區域配置(從zone文件名和結尾}; )?

您可以使用sed刪除給定區域的配置:

sed '/^zone "domain4.com" {$/,/^};/d' file

如果你想要一個可以將區域作為參數的腳本,只需添加she-bang和參數:

#!/bin/bash
sed '/^zone "'"$1"'" {$/,/^};/d' file

如果文件排序良好,您可以使用awk進行自動記錄和字段分離:

awk '
  BEGIN { RS = ORS = "\n\n"; FS="\n" } 
  $1 !~ /domain3/
' file

刪除第一行包含“domain3”的區域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM