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