当前位置: 首页 > 知识库问答 >
问题:

tnsnames上的regex。ora公司

鲁鸿朗
2023-03-14

我的名字。ora文件有2种格式:db\U cl=(描述=(地址=(协议=TCP)(主机=a55)(端口=1522))(连接\U数据=(服务器=专用)(服务\U名称=cl)))

dbcd=(描述=(地址=(协议=TCP)(主机=a66)(端口=1521))(连接\u数据=(服务器=专用)(服务\u名称=cd)))

myx5=(描述=(地址=(协议=TCP)(主机=v55)(端口=1521))(连接\u数据=(服务器=专用)(服务\u名称=x5)))

我想获取特定service\u名称或sid的主机名。在某些情况下,它是sid,在某些情况下,它是service\u name。为了获得主机名,我应该用grep搜索什么?在本例中,我想获取html" target="_blank">字符串“host\u name”。

****更新****我也需要db_name2,如果有人可以帮助

共有2个答案

施琦
2023-03-14

@drf:尝试:

 awk '/HOST/{sub(/).*/,"",$(NF-2));print $(NF-2)}'   Input_file

只需为每行查找字符串主机,然后替换即可)。*从awk与其中的字符串HOST匹配的行的第二个最后一个字段开始,它应该为您提供HOST\u名称。

编辑:要查找特定的SID或服务名称,请尝试:

awk '/HOST/{sub(/).*/,"",$(NF-2));HOST=$(NF-2);next} /SID/{print HOST}'

将SID更改为您要搜索的sid或服务名称,然后它应该可以工作。

编辑2:

awk '/db_name/{sub(/=/,"",$1);DB=$1}/HOST/{sub(/).*/,"",$(NF-2));HOST=$(NF-2);next} /chumma/{print DB ORS HOST}'

编辑3:

awk '{gsub(/\)|\(/,"");;for(i=1;i<=NF;i++){if($i=="HOST"){host=$(i+1)};if($NF=="cd"){val="DB_NAME= "$1", HOST_NAME= "host",SID/SERVICE_NAME= "$NF}};if(val){print val;val=""}}'  Input_file

或(溶液的非线性形式也如下):

awk '{gsub(/\)|\(/,"");
      for(i=1;i<=NF;i++){
                                if($i=="HOST"){
                                                host=$(i+1)
                                              };
                                if($NF=="cd") {
                                                val="DB_NAME= "$1", HOST_NAME= "host",SID/SERVICE_NAME= "$NF
                                              }
                        };
      if(val)           {
                                print val;
                                val=""
                        }
     }
    '   Input_file

您可以在上面的代码中放置另一个要搜索的服务或ssid。

白哲茂
2023-03-14

如果perl可用,请尝试以下命令:

perl -nle 'BEGIN{$service = shift}
    $host = $1 if /HOST\s*=\s*([^\s\)]+)/i;
    print $host if /\((SID|SERVICE_NAME)\s*=\s*$service\)/;
' blabla tnsnames.ora

它存储在主机= 并在遇到时打印它(**SID/SERVICE\u NAME**=blabla)

 类似资料:
  • 你有: Oracle数据库 Oracle客户端安装,包括SQL*Plus #1的TNS信息 但是没有TNSNames。ORA文件或创建和维护ORA文件的愿望 如何使SQL*Plus连接正常运行?

  • 我做了一些研究,有一个建议可以使用双重 但是现在我得到了ORA-06502/ORA-06512错误: ORA-06502:PL/SQL:erreur numérique ou erreur sur une valeur ORA-06512:àsys.xmltype“,ligne 272 ORA-06512:àligne 1 06502。00000-“PL/SQL:数值或值错误%s” *原因:出现算

  • 问题内容: 我有一个方法,该方法将为准备好的语句执行带有QueryParameters列表的查询。该和只是小的Java bean和基础上,应该是不言自明的就是你在这里看到。我正在尝试使用,而不是使用,其中是STRING类型,值是。但是,我遇到了错误。我的代码和输出如下。这是怎么回事? 输出: 问题答案: 我相信参数仅适用于 值 -不适用于SQL查询的一部分,例如表格。可能有一些数据库支持您要实现的

  • 从早上开始,我无法使用Oracle SQL Developer连接到我的locat DB(Oracle XE 11g)。 我尝试了关机和启动服务。 错误消息 **状态:失败-测试失败:侦听器拒绝连接,出现以下错误:ORA-12505,TNS:侦听器当前不知道连接描述符中给出的SID** 但是我可以作为sysdba连接。 侦听器文件: TNS文件: lsnrctl状态:结果

  • 问题内容: 我正在使用Java / Groovy通过RegEx在字符串上查找匹配项(并提取它们)。在性能上,可以说在5000个字符的字符串上找到200个或更多正则表达式匹配项的最佳方法是什么。简而言之,是否可以避免为每个RegEx扫描字符串? 我可以使用java提供的Pattern和Matcher类,但随后必须编译200个模式,然后将字符串传递给matcher 200次。这是唯一的方法吗? 问题答

  • 本文向大家介绍Java Regex中的Regex元字符,包括了Java Regex中的Regex元字符的使用技巧和注意事项,需要的朋友参考一下 元字符是在Java正则表达式中具有特殊含义的字符。 Java正则表达式中支持以下元字符。