davdomin
davdomin

Reputation: 1219

How to parse a File in power shell with conditional and garbage

I need to get part of this file for example, I need extract the following

Main, Branches\Branch1

in one variable also the I cannot have duplicate values

It is possible with powershell?

This is the file:

This is a garbage line
This is another garbage line
c:\Folder\Main\Folder\..\Folder
c:\Folder\Main\Folder\..\Folder
c:\Folder\Branches\Branch1\Folder\..\Folder
c:\Folder\Branches\Branch1\Folder\..\Folder
c:\Folder\Branches\Branch1\Folder\..\Folder
c:\Folder\Main\Folder\..\Folder
c:\Folder\Main\Folder\..\Folder
this is the final line..

Upvotes: 0

Views: 54

Answers (2)

mjolinor
mjolinor

Reputation: 68341

This will extract those values from the sample data using a -like filter to take out the garbage and a -replace to do the extract. The sort -unique will remove the duplicates, but it won't keep the extracted values in the same order they were in the file.

(get-content testfile.txt) -like 'c:\Folder*' -replace 'c:\\Folder\\(.+?)\\Folder.+','$1' |
 sort -unique

Upvotes: -1

JPBlanc
JPBlanc

Reputation: 72680

But of course ...

According to the fact $files contain your lines

$files = Get-content "your file"

You can use the following to be sure that there is no duplicate :

$files | Sort-Object -Unique

Then you can use Test-path to be sure that path exists

$files | Sort-Object -Unique | where {Test-Path $_ -ErrorAction SilentlyContinue}

Upvotes: 2

Related Questions