awk脚本,需要以下关键字

使用这个返回多行结果:awk脚本,需要以下关键字

awk '$1 == "pool" { f=1; print $1,$2; next }   

f == 1 { if ($1 == "pool") { print }

else if ($1 == "members") { print }

else if ($0 ~ /^}/) { f=0 }

}' bigip.conf

也就是说,直到配置有以下行的IP地址工作正常。 我如何获得它打印IPs,如果他们在以下线路上。 配置有两个,有一些在同一行上,一些在下一个1,2或3行。

数据:

pool pl_stage_xxx_microsites_9483 { 

monitor all tcp_half_open

members {

11.11.11.11:9483 {}

11.22.22.22:9483 {

session user disabled

}

}

}

回答:

很难没有看到更多您的数据和预期产出的说,但我认为,所有你需要的是这样的:

awk ' 

/^}/ { inPool=0 }

$1 == "pool" { inPool=1; inMembers=0 }

inPool {

if ($1 == "pool") {

print $1, $2

print

}

else if ($1 == "members") {

inMembers = 1

}

if (inMembers) {

print

}

}

' file

上面至少应该是一个很好的起点。关于使用getline发布的其他答案 - getline有一些适当的用途,但这不是其中之一,直到您完全理解并可以接受所有注意事项才使用getline,请参阅http://awk.info/?tip/getline。

回答:

请尝试以下awk代码:

awk ' 

$1 == "pool" {

f=1

print $1,$2

next

}

f == 1 {

if ($1 == "pool") {

print

}

else if ($1 == "members") {

print

getline

while ($0 ~ "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:[0-9]{1,5}"){

print

getline

}

}

else if ($0 ~ /^}/) {

f=0

}

}'

,而他们的存在,将打印IP线路。

以上是 awk脚本,需要以下关键字 的全部内容, 来源链接: utcz.com/qa/258122.html

回到顶部