提取两个字符串之间的特定字符串并列出所需的内容 [英] Extract specific string between two strings and list the required content

查看:244
本文介绍了提取两个字符串之间的特定字符串并列出所需的内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何找到字符串可用的块名称?

server.conf文件

  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,19​​2.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;

注意: -


  1. server_pool是一个静态字符串

  2. pool_name可以是任何不含空格的字符串。

要求


  1. 需要通过提供的服务器主机名作为输入来查找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:-

  1. "server_pool" is a static string
  2. "pool_name" can be any string without spaces
  3. "if a line has # in it ignore it

Requirement

  1. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆