Удалить строку с помощью PowerShell - PullRequest
2 голосов
/ 16 июня 2020

Я хотел бы удалить пустую строку при использовании powershell. Вот мой текст

Line 1
Line 2
<Empty line>
<Empty line>
Line 3
Line 4

Я пробовал использовать -replace ("` n "," "), но это не сработало. Пожалуйста помоги!

Ответы [ 2 ]

3 голосов
/ 16 июня 2020
$text = """
Line 1
Line 2


Line 3
Line 4
"""

$text -replace "(?m)^\s*`r`n",''
# Or
$text -replace "(?m)^\s*`n",''

объяснение регулярного выражения:

(?m) set the multiline flag so ^ matches the beginning of each line and not just the begining of the whole string.
^ matches the beginning of a line
\s* matches any number of white spaces (could also be 0 white spaces)
`r`n matches the end of a line.

Почему `r`n или просто` n (в зависимости от машины или файла):

\`r = CR (Carriage Return) → Used as a new line character in Mac OS before X
\`n = LF (Line Feed) → Used as a new line character in Unix/Mac OS X
\`r\`n = CR + LF → Used as a new line character in Windows
0 голосов
/ 16 июня 2020

Или просто прочтите файл как массив строк и используйте Where-Object, чтобы разрешить передачу только строк, содержащих хотя бы один непробельный символ.

$text = Get-Content -Path 'D:\Thefile.log' |
        Where-Object { $_ -match '\S' }

Теперь вы можете сохранить этот массив строк в $text вернуться к файлу, соедините его с [environment]::NewLine, чтобы снова стать одной строкой, или ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...