如何使用正则表达式过滤部分字符串?

时间:2016-09-07 17:28:39

标签: regex powershell powershell-v4.0

使用PowerShell我可以从包含所需文本的文件中获取行:

Get-ChildItem -recurse -Attributes !Directory+!System | Get-Content | Select-String "tshtml"

这给出了以下结果:

 templateUrl: '/tshtml/generic/gkeyvalue/gkeyvalue.html'
 templateUrl: '/tshtml/generic/permission/permission.html'
 templateUrl: '/tshtml/generic/permission2/permission2.html'

但现在我想将其中的一部分作为输出:

 /generic/gkeyvalue/gkeyvalue.html
 /generic/permission/permission.html
 /generic/permission2/permission2.html

我该怎么做?我正在阅读有关正则表达式的内容,但我对它的了解并不多:(

2 个答案:

答案 0 :(得分:1)

... | Select-String "tshtml" | ForEach { $_.Line -replace "^.*(?=/generic)|'$" }

替换行前/generic的行的开头和行尾的',什么也没有。

Select-String "tshtml" | ForEach { if ($_.Line -match "'/tshtml(.*)'") { $Matches[1] } }

捕捉''之间的文字并输出。

答案 1 :(得分:0)

尝试以下方法:

... | Select-String "tshtml"|awk '{print $2}'| tr -d "'"