How to trim blank spaces from PowerShell output?

Alicia picture Alicia · Jul 19, 2011 · Viewed 38.4k times · Source

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"

Answer

Shay Levy picture Shay Levy · Jul 19, 2011

You can use the TrimStart() method to remove leading spaces. There's also TrimEnd() to remove characters from the end, or Trim() to remove characters from both sides of the string.