如何找到字符串可用的块名称?
节的例子
server_pool pool_name {
0:hostname:yes/no:profile:ip_address
1:hostname:yes/no:profile:ip_address
2:hostname:yes/no:profile:ip_address
.:hostname:yes/no:profile:ip_address
.:hostname:yes/no:profile:ip_address
N:hostname:yes/no:profile:ip_address
}
server.conf文件
server_pool odd {
0:server1:yes:profile_server1:192.168.1.1,192.168.1.2;
1:server3:yes:profile_server3:192.168.1.5,192.168.1.6;
}
server_pool even {
0:server2:yes:profile_server2:192.168.1.3,192.168.1.4;
1:server4:yes:profile_server4:192.168.1.7,192.168.1.8;
}
#server_pool even {
# 0:server1:yes:profile_server1:192.168.1.1,192.168.1.2;
# 1:server3:yes:profile_server3:192.168.1.5,192.168.1.6;
#}
注: -
要求
当提供主机名作为server.conf文件的输入时,我期待它所属的pool_name的输出。
例如
server.conf<服务器1 然后它应该返回 “奇数”
server.conf<服务器2 然后它应该返回 “偶”
答案 0 :(得分:1)
from my_project.any_module import any_module
def __init__(self):
print any_module.argument
说明:这里进行了两次检查,首先是清除以注释开头的记录和包含awk -v RS= '!/^#/&&/server2/{print $2}' input
even
awk -v RS= '!/^#/&&/server1/{print $2}' input
odd
的记录,其中X是服务器的编号。 serverX
设置为空白以使awk将para作为单个记录。
您可以使用以下RS
变量作为输入,其中host是设置值的变量:
bash
答案 1 :(得分:1)
尝试以下脚本并告诉我这是否对您有所帮助。根据您的需要,此脚本将需要给出一个参数。然后将从您的Input_file匹配,并根据该池名称进行打印。
cat script.ksh
var=$1
awk -v VAR="$var" -F' +|:' '/^}/{flag=""} /^server_pool/{flag=1;pool=$2;;next} flag && $0 ~ VAR{print pool}' Input_file
以下是我运行时的输出。
./script.ksh server1
odd