Подсчитать количество вхождений символов для каждого файла (только первая строка) - PullRequest
0 голосов
/ 05 марта 2020

У меня есть папка, содержащая кучу CSV-файлов.

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

Желаемый выходной файл будет:

File_1 : 6 --number of semicolons in the 1st line of the 1st file
File_2 : 8  --number of semicolons in the 1st line of the 2nd file
File_3 : 13  --number of semicolons in the 1st line of the 3rd file
...

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

Вы можете разбить это на:

  • Найти все файлы
  • Для каждого из них:
    • Читать первую строку
    • Количество точки с запятой
    • Имя выходного файла + счетчик
# Discover the files
$csvFiles = Get-ChildItem C:\path\to\folder\*.csv

foreach($file in $csvFiles){
  # Read first line
  $firstLine = $file |Get-Content -TotalCount 1

  # Remove anything that's NOT a semicolon - resulting length is the count
  $firstLine = $firstLine -replace '[^;]'

  # output file name and count
  [pscustomobject]@{
    Filename = $file.Name
    Count = $firstline.Length
  }
}
0 голосов
/ 05 марта 2020

Принятый ответ казался немного излишне сложным, так что вот один вкладыш Powershell:

Get-Childitem -Filter *.csv | % {$_ | Add-Member -Name Count -MemberType NoteProperty -Value ([regex]::Matches((Get-Content $_.Name -TotalCount 1), ':').Count); $_} | Select Name, Count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...