supertoy
supertoy

Reputation: 13

Extract partial line of text from text file

I need to keep the first 5 characters from data being pulled from a text file.

Data looks like this:

S1831KWT0081
S2004KWT0083
S2351KWT0085
S0054KWT0087

Results should looks like this:

S1831
S2004
S2351
S0054

I can get it working when setting the variable within PowerShell:

PS> $a = "S1831KWT0081"
PS> $a.Substring(0, $a.IndexOf('K'))

S1831

but I'm stuck when trying to pull from a text file.

Upvotes: 1

Views: 635

Answers (3)

Ansgar Wiechers
Ansgar Wiechers

Reputation: 200523

Another option would be a regular expression replacement:

(Get-Content 'C:\path\to\input.txt') -replace '^(.{5}).*', '$1'

That would also allow you more specific matches, e.g. like this:

$re = '^([a-z]\d{4}).*'
(Get-Content 'C:\path\to\input.txt') -match $re -replace $re, '$1'

Upvotes: 1

user6811411
user6811411

Reputation:

Just to show there always is more than one PoSh way ;-)

gc .\input.txt|%{$_.split('K')[0]}

Or the more verbose version

Get-Content .\input.txt | 
  ForEach-Object { $_.split('K')[0] }

Upvotes: 0

Jacob Colvin
Jacob Colvin

Reputation: 2835

To solve this, you will need to parse the text file on a line-by-line basis. Basically treating each line as a value in an array.

Get-Content location.txt | foreach { $_.Substring(0, $_.IndexOf('K')) }

Upvotes: 1

Related Questions