-1

Hostgroupsでassign where "mango"を使用して{および}内の行を印刷したい

   object Host "os.google.com" {
    import "windows"
    address = "linux.google.com"
    groups = ["linux"]
    }

    object Host "mango.google.com" {
    import "windows"
    address = "mango.google.com"
    groups = ["linux"]

    assign where "mango" in Hostgroups
    }

望ましい出力:

    object Host "mango.google.com" {
    import "windows"
    address = "mango.google.com"
    groups = ["linux"]

    assign where "mango" in Hostgroups
    }
4

3 に答える 3

0

これはうまくいくかもしれません(GNU sed):

sed -n '/{/h;//!H;/}/{g;/assign where "mango" in Hostgroups/p}' file

オプションを使用して seds の自動出力をオフ-nにし、中括弧の間のホールド スペースに行を集めます。閉じ中括弧に続いて、ホールド スペースの内容に置き換え、一致する場合はそれをassign where "mango" in Hostgroup出力します。

于 2019-06-22T22:07:11.097 に答える
0

このawkスクリプトを試してください

script.awk

/{/,/}/ { #define record range from { to }
    if ($0 ~ "{") rec = $0; # if record opening reset rec variable with current line
    else rec = rec "\n" $0; # else accumulate the current line in rec
    if ($0 ~ /assign where "mango" in Hostgroups/) { # if found exit pattern in current line
        print rec; # print the rec
        exit;      # terminate
    }
}

実行:

awk -f script.awk input.txt

出力:

object Host "mango.google.com" {
import "windows"
address = "mango.google.com"
groups = ["linux"]

assign where "mango" in Hostgroups
于 2019-06-22T20:12:35.777 に答える