提取两个字符串之间的特定字符串并列出所需的内容 [英] Extract specific string between two strings and list the required content
本文介绍了提取两个字符串之间的特定字符串并列出所需的内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何找到字符串可用的块名称?
server_pool奇数{
0:server1:是:profile_server1:192.168.1.1,192.168.1.2;
1:server3:是:profile_server3:192.168.1.5,192.168.1.6;
}
server_pool甚至{
0:server2:是:profile_server2:192.168.1.3,192.168.1.4;
1:server4:是:profile_server4:192.168.1.7,192.168.1.8;
}
#server_pool甚至{
#0:server1:是:profile_server1:192.168.1.1,192.168.1.2;
#1:server3:是:profile_server3:192.168.1.5,192.168.1.6;
注意: -
- server_pool是一个静态字符串
- pool_name可以是任何不含空格的字符串。
要求
- 需要通过提供的服务器主机名作为输入来查找pool_name,例如服务器{1,2,3},并将其存储在变量中
例如
如果需要查找server1属于哪个block / stanza。在给定的用例中它属于odd,所以存储变量为POOLNAME = odd
解决方案
grep -oP'^ server \s\K [ ^] + | ^ [^#] \ s + \ d +:\ K [^:] +'inputfile
pool0
server1
server2
pool1
server3
server4
how to find the block name in which the string available ?
server.conf file
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;
#}
Notes:-
- "server_pool" is a static string
- "pool_name" can be any string without spaces
- "if a line has # in it ignore it
Requirement
- Need to find the "pool_name" by the provided server hostname as input i.e server{1,2,3,} and store it in a variable
for example
if need to find server1 belongs to which block/ stanza. in the given use case it belongs to odd, so store variable as POOLNAME=odd
解决方案
grep -oP '^server\s\K[^ ]+|^[^#]\s+\d+:\K[^:]+' inputfile
pool0
server1
server2
pool1
server3
server4
这篇关于提取两个字符串之间的特定字符串并列出所需的内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文