Длина строки после разделителя в данных внутри файла - PullRequest
0 голосов
/ 05 марта 2020

У меня есть тонна файлов данных с разделителями внутри, и я хотел бы узнать максимальную длину столбца после каждого разделителя. Поскольку я не могу использовать стороннюю программу, я хотел бы сделать это с помощью PowerShell, поскольку она встроена для Windows. И в то же время я не могу сделать это вручную. Итак, интересно, можно ли этого достичь с помощью PowerShell или с помощью какого-либо простого трюка?

Вот мои примеры данных в файле FOO.TXT

Col1 | Col2 | Col3

12345 | Это строка | Это еще одна строка

45688 | Строка | Это еще одна строка неизвестной длины

30098 | Строка второго столбца | Строка третьего столбца

Ожидаемый результат:

Col1 Макс. Длина - 5

Col2 Макс. Длина - 20

Col3 Максимальная длина - 40

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Вот ответ, который я искал, независимо от расширения файла. Благодаря @Vad и @ Theo.

$j=Import-Csv -Delimiter "|" -Path D:\testdir\FOO.TXT #import our csv as array string
$columns = $j[0].PSObject.Properties.Name #get columns name
Foreach($column in $columns){
$l=($j."$column"|Measure-Object -Maximum -Property Length).Maximum #for each column get max length
Write-Host $column" Max Length- "$l
}
1 голос
/ 06 марта 2020

Вы можете сделать это так (но файл с данными должен иметь расширение csv):

$j=Import-Csv -Delimiter "|" -Path D:\testdir\new.csv #import our csv as array string
$colums=$j|gm -MemberType NoteProperty|Select-Object -ExpandProperty Name #get columns name
Foreach($colum in $colums){
$l=($j."$colum"|Measure-Object -Maximum -Property Length).Maximum #for each column get max length
Write-Host $colum" Max Length- "$l
}
...