Nic*_* G. 2 xml text-processing
我有这个 jdbc 文件行
<url>jdbc:oracle:thin:@192.168.1.70:1521:MYDBORA</url>
Run Code Online (Sandbox Code Playgroud)
我需要使用某种实用程序来捕捉MYDBORA
零件,但它并不总是同名。我需要之间的部分1521:
和</url>
grep 1521 config_file.xml | sed 's/.*://' |grep -o -P '.0,6</url'
Run Code Online (Sandbox Code Playgroud)
我一无所获*我也尝试过:
grep 1521 config_file.xml | cut -d ':' -f 6
Run Code Online (Sandbox Code Playgroud)
我得到
MYDBORA<url>
Run Code Online (Sandbox Code Playgroud)
我只想要数据库的名称,不总是 5 个字符,而是介于1521:
和<url>
文件提取:
<url>jdbc:oracle:thin:@192.168.1.70:1521:MYDBORA</url>
Run Code Online (Sandbox Code Playgroud)
由于这是 JDBC 并且您正在处理一个 XML 文件,因此您可以使用它xmlstarlet
来可靠地挑选出必要的元素,而无需考虑空格或其他不相关的格式
使用JDBC 文档中的一个示例,选择就<connection-url/>
这么简单
xmlstarlet sel -t -v '//connection-url' -n config_file.xml
jdbc:oracle:thin:@%hostname%:%port%:%database sid%
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您需要使用<url/>
而不是<connection-url/>
因此相应地替换。然后你可以挑出最后一个冒号:分隔字段
xmlstarlet sel -t -v '//url' -n config_file.xml | awk -F: '{print $NF}'
MYDBORA
Run Code Online (Sandbox Code Playgroud)