supprimer les lignes vides du fichier texte avec PowerShell
Je sais que je peux utiliser:
gc c:\FileWithEmptyLines.txt | where {$_ -ne ""} > c:\FileWithNoEmptyLines.txt
pour supprimer des lignes vides. Mais Comment je peux les enlever avec 'remplacer' ?
- Pourquoi voulez-vous le remplacer? Et de travailler sur votre taux d'acceptation
- Ma réponse supprime les lignes vides avec le
-replace
opérateur de comparaison.Get-Content
n'a pas un paramètre remplacer, donc je suis en supposant que vous êtes à la recherche d'un moyen de le faire avec l'opérateur.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une belle doublure ici >> http://www.pixelchef.net/remove-empty-lines-file-powershell. Juste testé avec plusieurs ébauches de lignes y compris les retours à la ligne uniquement ainsi que des lignes avec juste des espaces, juste onglets, et les combinaisons.
Voir l'original pour quelques notes sur le code. Sympa 🙂
(gc file.txt) | ? { -not $_.IsNullOrWhiteSpace() } | set-content file.txt
parce qu'il exprime l'intention plus clairement, mais il revient à la même chose.[String]::IsNullOrWhiteSpace({your string})
. La ligne de commande correcte de la base sur Neil Barnwell commentaire est comme suit:(gc file.txt) | ? { -not [String]::IsNullOrWhiteSpace($_) } | set-content file.txt
Ce morceau de code à partir de Randy Skretka fonctionne bien pour moi, mais j'ai eu le problème, que j'ai toujours eu un saut de ligne à la fin du fichier.
J'ai donc ajouté enfin ceci:
Vous pouvez utiliser le match au lieu -eq si vous aussi vous souhaitez exclure des fichiers qui ne contiennent que des caractères espace:
Pas spécifiquement à l'aide de
-replace
, mais vous obtenez le même effet de l'analyse du contenu à l'aide de-notmatch
et regex.(Get-Content -Path ".\vbXML.cls") -replace "\'.*$", "" -notmatch "^\s*$" | Out-File ".\vbXML.uncommented.cls" -Append
Vous ne pouvez pas le faire remplacer, vous avez à remplacer quelque CHOSE avec quelque CHOSE, et vous n'avez à la fois.
Si vous souhaitez filtrer les lignes vides d'un fichier alors que vous pouvez essayer ceci:
(gc $source_file).Trim() | ? {$_.Longueur -gt 0}
Cela permettra de supprimer les lignes vides ou avec seulement des espaces (tabulations et les espaces).
Cela supprime fin les espaces et les lignes vides à partir de file.txt
Commencer par obtenir le contenu du fichier et couper les espaces en blanc, si tout trouvé dans chaque ligne du texte du document. Que devient l'objet passé en cas d'objet pour passer à travers le tableau à la recherche à chaque membre de la matrice avec la longueur de chaîne supérieure à 0. Cet objet est transmis à remplacer le contenu du fichier que vous avez commencé avec. Il serait probablement mieux de faire un nouveau fichier...
La dernière chose à faire est lue le nouveau contenu du fichier et de voir vos talents.
(Get-Content ./copy.txt).Replace("~/","/home/edward/") | Set-Content ./copy.txt