从输出中删除路径

时间:2015-07-05 16:35:38

标签: powershell select-string

在PowerShell中使用以下Select-String命令:

Select-String -Path E:\Documents\combined0.txt -Pattern "GET /ccsetup\.exe" -AllMatches > E:\Documents\combined3.txt

创建一个输出文件,每行以路径和文件名开头,后跟冒号。例如:

E:\Documents\combined0.txt:255:255.255.255 - - [31/Dec/2014:04:15:16 -0800] "GET /ccsetup.exe HTTP/1.1" 301 451 "-" "Mozilla/5.0 (compatible; SearchmetricsBot; http://www.xxxx.com/en/xxxx-bot/)"

如何在结果中删除输出文件路径名,输出文件名和冒号?

6 个答案:

答案 0 :(得分:15)

Select-String输出一个对象,您可以从中选择所需的属性。 Get-Member命令将显示这些对象成员,如果你输入它,例如:

Select-String -Path E:\Documents\combined0.txt -Pattern "GET /ccsetup\.exe" -AllMatches  | 
    Get-Member

其中一个属性是Line。所以试试这样:

Select-String -Path E:\Documents\combined0.txt -Pattern "GET /ccsetup\.exe" -AllMatches | 
    Foreach {$_.Line} > E:\Documents\combined3.txt

答案 1 :(得分:4)

像往常一样,powershell将对象作为对象返回,默认情况下,select-string返回几个属性,包括LineNumber,Filename等;你想要的数据就是“Line”。所以不需要任何花哨的东西,只需将它管道输入“选择线”。

例如:

Select-String "bla" filename.txt | select line

或者在你的例子中:

Select-String -Path E:\Documents\combined0.txt -Pattern "GET /ccsetup\.exe" -AllMatches | select line | out-file E:\Documents\combined3.txt

答案 2 :(得分:1)

如果你正在寻找(子)字符串而不是模式,那么使用UIImage *portraitImage = [UIImage imageNamed:@"test_bar_portrait.png"]; UIImage *landscapeImage = [UIImage imageNamed:@"test_bar_landscape.png"]; [[UINavigationBar appearance] setBackgroundImage:portraitImage forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setBackgroundImage:landscapeImage forBarMetrics:UIBarMetricsLandscapePhone]; self.navigationController.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleTopMargin; 运算符可能是一种更好的方法,性能方面和易用性。

-like

如果您确实需要模式匹配,则可以使用$searchString = 'GET /ccsetup.exe' Get-Content 'E:\Documents\combined0.txt' | ? { $_ -like "*$searchString*" } | Set-Content 'E:\Documents\combined3.txt' 运算符轻松替换-like运算符:

-match

答案 3 :(得分:0)

Get-Content E:\Documents\combined0.txt | Select-String -Pattern "GET /ccsetup\.exe" -AllMatches

答案 4 :(得分:0)

any

答案 5 :(得分:0)

我发现了这一点,并希望有一种更简单的方法来过滤出确切的文本。我在“选择字符串-Path C:\ Temp \ AccountLockoutPolicy.Txt -Pattern'ResetLockoutCount ='”的末尾使用了“ | select-object -ExpandProperty Line”,它删除了路径和行号。我喜欢简单!