#powershell #csv
#powershell #csv-файл
Вопрос:
У меня есть CSV-файл с данными, представленными следующим образом:..
#date,a,b,c#
10,1,0,0
11,0,0,1
12,0,1,0
13,0,1,0
14,0,0,1
15,1,0,0
16,0,1,0
17,1,0,0
18,1,0,0
19,0,0,1
Я хочу записать значения столбцов с заголовками «1» A, B, C, только «1» появляется один раз в каждой строке…
Я хочу, чтобы мой результат был чем-то вроде
A, C,B,B,C, A,B,A,A,C
Любая помощь приветствуется. Спасибо
Ответ №1:
- Просто выполните итерацию по каждой строке (
$Row
) в таблице данных ($data
) - Соберите все соответствующие столбцы (
'a', 'b', 'c'
), которые соответствуют вашим требованиям (например-eq 1
,) - Возвращает результат, если только один столбец соответствует требованию
ForEach ($Row in $Data) {
$Header = ('a', 'b', 'c').Where{ $Row.$_ -eq 1}
If ($Header.Count -eq 1) { $Header }
}
Комментарии:
1. Спасибо за быстрый ответ! Вау, спасибо, что рассказали мне, как это было получено. Я даю вам правильный ответ для первого ответа. Спасибо
Ответ №2:
Для каждой записи в файле CSV вам нужно будет перебирать имена столбцов / заголовков, пока не найдете тот, в котором значение столбца для этой записи равно 1
:
foreach($record in Import-Csv .pathtofile.csv){
'A','B','C' |Where-Object { $record."$_" -eq 1 } |Select-Object -First 1
}
Комментарии:
1. Спасибо, что рассказали мне, как это было получено.