Как подсчитать количество запятых каждой строки в csv с помощью powershell?

Как подсчитать количество запятых каждой строки в csv-файле с помощью powershell ?
Цель этого состоит в том, чтобы сравнить с количеством запятых в строке заголовка. Если это не одно и то же, отобразите номер строки. Я пытался искать в интернете, но не смог найти решение для этого.

1 ответ

  1. Вы можете попробовать что-то вроде этого. Однако, если у вас есть значения в кавычках с запятыми внутри, вам нужно написать регулярное выражение, чтобы либо сделать подсчет, либо по крайней мере удалить ложные срабатывания.

    Я использую заголовок (строка 1) в качестве базовой линии для количества запятых.

    ###########SAMPLE####
    $data = @"
    header1,header2,header3
    value1,value2,value3
    value1,value2,,value3
    value1,,value2,value3
    value1,value2,value3
    "@ -split "`n"
    ######################
    
    $data = Get-Content myfile.csv
    
    #Count in header
    $header = $data[0].Split(",").Count
    #Line counter
    $i = 1
    
    #Find lines with less or more commas
    $data | ForEach-Object { 
        $c = $_.Split(",").Count
        if($c -ne $header) { "Line $i - $c commas" }
        $i++
    }