什么是提取这条线的最简单方法?

时间:2015-06-08 20:06:04

标签: powershell

我使用PowerShell将数据插入到数据库中,但在进入该步骤之前,我需要从日志文件中提取信息。如何从日志文件中的这一行提取项目的标题?

1>Project "E:\Builds\1\IS_WSD\Lab1\src\Lab1.sln" on node 1 (default targets).

标题是" Lab1.sln"

我已经拥有了(Get-Content C:\Users\myusername\Documents\Lab1.log)[1]这一整行,但我需要进一步缩小范围。

2 个答案:

答案 0 :(得分:3)

正则表达式如何:

$x = '1>Project "E:\Builds\1\IS_WSD\Lab1\src\Lab1.sln" on node 1 (default targets).'
$x -match '".*\\(.*)"'
$Matches[1]

或非正则表达方式:

$x.SubString($x.LastIndexOf('\')+1, ($x.LastIndexOf('"')-$x.LastIndexOf('\'))-1)

答案 1 :(得分:0)

这样做:

$logfile = 'C:\Users\myusername\Documents\Lab1.log'
(Get-Content $logfile)[1] -replace '^.*?".*?\\([^\\]+)".*', '$1'

或者这个:

$logfile = 'C:\Users\myusername\Documents\Lab1.log'
(Get-Content $logfile)[1] -replace '^.*?"' -replace '".*$' -replace '^.*\\'