Powershell Подсчет строк в файле - PullRequest
0 голосов
/ 31 августа 2018

Выпуск

Measure-Object -Line поведение не соответствует и не возвращает правильное количество строк при попытке прочитать файл.

Использование .Count, похоже, решает эту конкретную проблему, но, опять же, она не является согласованной, поскольку она не работает аналогично при работе со строкой.

Вопрос

Как я могу последовательно получить правильное количество строк из текста или файла?

MWE

$File       = ".\test.ini"
$FileContent  = Get-Content $File
$Content =
"    # 1
    [2]
    3

    5

    [7]

    ; 9
"

$EndOfFile    = $FileContent | Measure-Object -Line
$EndOfText    = $Content | Measure-Object -Line

Write-Output "Lines from file: $($EndOfFile.Lines)"
Write-Output "Lines from text: $($EndOfText.Lines)"
Write-Output "Count from file: $($FileContent.Count)"
Write-Output "Count from text: $($Content.Count)"

Примечание: Содержимое test.ini точно такое же, как и у переменной $Content.

выход

Lines from file: 6
Lines from text: 9
Count from file: 9
Count from text: 1

1 Ответ

0 голосов
/ 29 апреля 2019

Это правда, что говорит @ TheIncorrigible1. Чтобы сделать это последовательно в вашем примере, вы должны сделать это следующим образом:

$File       = ".\test.ini"
$FileContent  = Get-Content $File

$Content = @(
    "# 1",
    "[2]",
    "3",
    "",
    "5",
    ""
    "[7]",
    ""
    "; 9"
)

$EndOfFile    = $FileContent | Measure-Object -Line
$EndOfText    = $Content | Measure-Object -Line

Write-Output "Lines from file: $($EndOfFile.Lines)"
Write-Output "Lines from text: $($EndOfText.Lines)"
Write-Output "Count from file: $($FileContent.Count)"
Write-Output "Count from text: $($Content.Count)"

Последовательный вывод:

Lines from file: 6
Lines from text: 6
Count from file: 9
Count from text: 9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...