-1

在 Windows 上使用 ActiveState perl 5.8。我将结果sc qc MyServiceName放入变量中。

$MSSQLResults=`sc qc $MSSQLServiceName`;
print "MSSQLResults $MSSQLResults";

如果我将变量打印到 STDOUT,我会得到如下信息:

[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: MSSQL$INSTANCE1
        TYPE               : 10  WIN32_OWN_PROCESS 
        START_TYPE         : 3   DEMAND_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : "C:\Program Files\Microsoft SQL Server\MSSQL10_50.INSTANCE1\MSSQL\Binn\sqlservr.exe" -sINSTANCE1
        LOAD_ORDER_GROUP   : 
        TAG                : 0
        DISPLAY_NAME       : SQL Server (INSTANCE1)
        DEPENDENCIES       : 
        SERVICE_START_NAME : TESTLAB\svc_SQLServer

我想从 grep 或正则表达式匹配返回的字符串是TESTLAB\svc_SQLServer . 我应该使用 grep、正则表达式还是其他什么?perl 的哪一行可以完成我想要的?文本TESTLAB\svc_SQLServer将根据我在哪台机器上运行而有所不同。

4

1 回答 1

4

如果我理解正确,您有一个$MSSQLResults要搜索的标量变量(例如 )。在这种情况下:

if (my ($service_start_name) = $MSSQLResults=~ m/SERVICE_START_NAME\s+:\s+(.*)/m) {
    # do something
}
于 2013-07-16T15:26:50.560 回答