Удалить знак процента и преобразовать значения в целое число файла CSV в PowerShell - PullRequest
0 голосов
/ 21 мая 2018

У меня есть CSV-файл, который выглядит следующим образом:

Host;Service;OK;WARN;CRIT;UNKNOWN;Flapping;H.Down;Downtime;N/A
Server1;DNS;0.00%;0.00%;100.00%;0.00%;0.00%;0.00%;0.00%;0.00%
Server2;Filesystem C:/;0.00%;0.00%;100.00%;0.00%;0.00%;0.00%;0.00%;0.00%
Server2;Filesystem D:/;28.82%;0.00%;70.68%;0.00%;0.00%;0.50%;0.00%;0.00%
Server3;Events;0.00%;0.00%;98.97%;0.00%;0.00%;1.03%;0.00%;0.00%
Server4;W32Time;0.00%;0.00%;100.00%;0.00%;0.00%;0.00%;0.00%;0.00%

В настоящее время я импортирую его с

$computers = Import-Csv .\foo.csv -Delimiter ";"

Я пробовал несколько разных вещей, чтобы попробоватьи очистить знак процента безрезультатно.

В конечном счете, я хотел бы получить каждое из значений в виде чисел, к которым я могу затем отформатировать их так, чтобы любое значение выше 0 (или 0,0%) было отформатированос цветом.Я полагаю, что при импорте в CSV все импортируется как строка, поэтому будет сложнее вычислять строку, особенно в строке со специальным символом.

1 Ответ

0 голосов
/ 21 мая 2018

Одна очевидная вещь, которую нужно сделать, - это предварительно обработать файл данных, чтобы удалить знаки %.Например:

(Get-Content .\data.csv).Replace("%","") | 
    Out-File .\data2.csv -Append

После того, как это будет сделано, легко использовать математические выражения для «чисел», приведя их к числовому типу, что вам нужно будет сделать для любого CSV (так каквы говорите, PowerShell обрабатывает все как строку в этом случае).Например:

Import-Csv .\data2.csv -Delimiter ";" |
    ForEach-Object {
        switch([double]$_.CRIT)
        {
            {$_ -lt 75.0} {"CRIT is under 75: $_"}
            default {"CRIT is over 75: $_"}
        }
    }

РЕДАКТИРОВАТЬ: компактная версия с предложением @LotPings:

(Get-Content .\data.csv).Replace("%","")  |
        ConvertFrom-Csv -Delimiter ";" |
            ForEach-Object {
                switch([double]$_.CRIT)
                {
                    {$_ -lt 75.0} {"CRIT is under 75: $_"}
                    default {"CRIT is over 75: $_"}
                }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...