我正在使用PowerShell脚本,该脚本利用SQLPlus查询oracle数据库。
查询是:select count(*) from table
powershell查询输出:
SQL*Plus: Release 11.2.0.1.0 Production on Sat Feb 6 09:50:52 2016
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
COUNT(*)
----------
50
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
我目前正在使用下面的语句来检索Count,虽然它似乎没有捕获结果。
if($file -match 'count (?<count>\d+)'){$count=[int32]$matches['count']}
非常感谢任何帮助/指导。 谢谢!
答案 0 :(得分:1)
我看到一个问题和一个潜在的问题。后者是我怀疑$file
是一个字符串数组。这对您不利,因为您正在寻找基于上面几行文本的数字。
问题是你的正则表达式不是多行的,在你的样本中,这个数字与count不在同一行。你的正则表达式只匹配Count 50
。这不是它在您显示的文本中的显示方式。
两个确保两个点都允许$file
一个字符串,然后运行与“COUNT”之后遇到的第一个数字相匹配的多行正则表达式。保持你拥有的命名匹配逻辑,因为它很好。
# This can most likely be moved to where this is read in.
$file = $file | Out-String
# try and match the regex.
if($file -match "(?s)Count.*?(?<count>\d+)"){
[int32]$Matches.Count
}