Comment couper les espaces vides à partir de PowerShell sortie?
Je suis à l'aide d'un script PowerShell pour trouver toutes les occurrences d'une expression régulière de l'expression et de sortie dans un fichier. J'ai deux objectifs pour cette question.
- Supprimer l'espace blanc d'une valeur de la colonne
- Spécifier une largeur d'un champ supplémentaire (numéros de lignes)
C'est ce que j'ai à ce jour:
gci -recurse -include *.* | Select-String -pattern $regexPattern |`
Format-Table -GroupBy Name -Property Path, Line -AutoSize
Ce sorties suivantes:
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.
C'est parce que les fichiers ont des espaces de début (en fait tirets/onglet espaces, mais délivrée comme des espaces blancs). Je ne peux pas modifier les fichiers originaux et retirer le premier espace blanc, car ils sont notre production de fichiers/scripts SQL.
Je veux couper le premier espace blanc de la Ligne de la colonne de sorte que la sortie ressemble à ceci:
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.
Et, si j'ajoute les numéros de lignes de la colonne en utilisant
-property LineNumbers
puis les numéros de lignes de la colonne de prendre jusqu'à environ la moitié de l'espace dans la ligne. Puis-je spécifier la largeur de l'numéros de lignes? J'ai essayé de le -AutoSize drapeau, mais cela ne semble pas bien fonctionner. J'ai essayé
LineNumber;width=50
LineNumber width=50
LineNumber -width 50
et toutes les variations de cela, mais j'ai des erreurs à l'aime de "Format-Table: Un paramètre ne peut pas être trouvée, qui correspond à nom de paramètre width=50"
gci -recurse -include *.* | Select-String -pattern $regexPattern | Format-Table @{Name='Path'; Expression={$_.Path}; Width=80}, @{Name='Line'; Expression={$_.Line -replace '^\s+', ''}; Width=200} | Out-File $outputTxtFile
OriginalL'auteur Alicia | 2011-07-19
Vous devez vous connecter pour publier un commentaire.
Je ne peux pas tester ça maintenant, mais je pense que cela devrait faire l'affaire ou, au moins, vous aider à aller dans la bonne direction:
+1 pour le classique de devis
OriginalL'auteur EBGreen
Vous pouvez utiliser le TrimStart() méthode pour supprimer les espaces à gauche. Il y a aussi TrimEnd() pour supprimer des caractères à partir de la fin, ou le Trim() pour supprimer tous les caractères des deux côtés de la chaîne.
OriginalL'auteur Shay Levy
Je ne voudrais pas utiliser le Format de Table pour la sortie vers un fichier.
Je préfère utiliser Export-Csv
Si vous voulez continuer à utiliser le Format de Table je vous conseille la lecture de cet article
http://www.computerperformance.co.uk/powershell/powershell_-f_format.htm
Citation:
OriginalL'auteur Tom