gpt4 book ai didi

sed - 从 TNS 条目中提取主机名

转载 作者:行者123 更新时间:2023-12-01 06:51:05 25 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本需要确定本地应用程序正在使用的数据库正在哪个节点上运行。我一直试图以此为契机,强制自己学习 awk/sed 并拥有一个测试脚本来测试语句。它正在处理我已移动到脚本所在的主文件夹的 tnsnames.ora 文件的副本。
这是一个有效的 tnsnames.ora 节:

(
DESCRIPTION = (
ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (Host=iplab)(Port=1521))
)
(CONNECT_DATA=(SID=spurs1))
)

在做了一些研究并使用 awk 表达式将 tns 条目拉到 $host 之后,我想出了下面的脚本,但它似乎不起作用。
#!/bin/ksh
db=spurs

host=$(awk -v db=$db "/${db}/ {for(i=1; i<=5; i++) {getline; print}}" tnsnames.ora)
echo $host
host= $host | sed 's/Host\s=\s\([a-z]+[0-9]?\)/\1/'
echo $host

当我运行它的 awk 语句时,我得到以下信息:
(DESCRIPTION = (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (Host=hostname)(Port=1521))) (CONNECT_DATA=(SID=spurs1)) )
./tns.ksh: line 6: (DESCRIPTION: not found
(DESCRIPTION = (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (Host=hostname)(Port=1521))) (CONNECT_DATA=(SID=spurs1)) )

根据我所看到的阅读教程和论坛,我认为 sed 设置正确,应该将 $host 设置为一个或多个小写字母,后跟 Host = 后的 0 或 1 个数字。由于 (DESCRIPTION 是 $host 在 sed 语句之前和之后的开始,我不确定它是如何找不到它的,因此

最佳答案

这对我有用:tnsping $db | grep HOST | cut -d\ -f 14 | sed 's/).*//g'

关于sed - 从 TNS 条目中提取主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10643560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com