kirgan
kirgan

Reputation: 43

powershell split keeping only the 2 first part of string

i'm new in powershell i have a file that contains OU paths separates by "/" i'd like to only keep the 2 first element of each string

example:

paris/sales/salers/14tharrdt

london/comptability/office1

would give

paris/sales

london/comptability

i googled and found many things, but no way to do this simple thing

thanks for help

Upvotes: 1

Views: 4617

Answers (2)

Martin Brandl
Martin Brandl

Reputation: 58941

You could use -split to split the string on the \ character, select the first two elements and join them together:

$content = Get-Content 'your_file_path'
$content | foreach {
    ($_ -split '/')[0, 1] -join '/'
}
$content | Set-Content 'your_file_path'

Or, if you prefer using regex here a solution without split (demo here):

$content = Get-Content 'your_file_path'
$content | foreach {
    $_ -replace '(.*?\/[^\/]+).*', '$1'
}
$content | Set-Content 'your_file_path'

Upvotes: 3

Andrey Marchuk
Andrey Marchuk

Reputation: 13483

Like:

$a = "paris/sales/salers/14tharrdt"
$b = $a.Split("/")[0] + "/" + $a.Split("/")[1]
$b

Improvement would be if call Split once and save it to a variable

Upvotes: 2

Related Questions