Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to trim blank spaces from PowerShell output?

I am using a PowerShell script to find all occurrences of a regex expression and output it to file. I have two objectives for this question.

  1. Remove leading white space from a column's value
  2. Specify a width for an extra field (LineNumbers)

This is what I have so far:

gci -recurse -include *.* | Select-String -pattern $regexPattern |`
Format-Table -GroupBy Name -Property Path, Line -AutoSize

This outputs the following:

Path                      Line                                                   
----                      ----
C:\myRandomFile.txt       This is line 1 and it is random text.
C:\myRandomFile.txt                This is line 2 and it has leading white space.
C:\myNextRandomFile.txt            This is line 3 and it has leading white space.
C:\myLastRandomFile.txt                         This is line 4. 

This is because the files have leading white spaces (actually indents/tab spaces, but outputted as white spaces). I can't change the original files and remove the leading white space as they are our production files/SQL scripts.

I want to trim the leading white space for the Line column so that the output looks like this:

Path                      Line                                                   
----                      ----
C:\myRandomFile.txt       This is line 1 and it is random text.
C:\myRandomFile.txt       This is line 2 and it has no leading white space.
C:\myNextRandomFile.txt   This is line 3 and it has no leading white space.
C:\myLastRandomFile.txt   This is line 4 and this is how it should look. 

And, if I add the LineNumbers column by using

-property LineNumbers 

then the LineNumbers column take up about half the space in the row. Can I specify the width of the LineNumbers? I've tried the -AutoSize flag, but this doesn't seem to work well. I've tried

LineNumber;width=50
LineNumber width=50
LineNumber -width 50

and all variations of this, but I get errors to the likes of "Format-Table: A parameter cannot be found that matches parameter name width=50"

like image 365
Alicia Avatar asked Dec 03 '22 07:12

Alicia


1 Answers

I can't test it right now, but I think this should do the trick or at least get you going in the right direction:

gci -recurse -include *.* | Select-String -pattern $regexPattern |`
Format-Table Path, @{Name='Line'; Expression={$_.Line -replace '^\s+', ''}; Width=50}
like image 71
EBGreen Avatar answered Dec 06 '22 19:12

EBGreen