![]() |
Разбор ячеек при поиске в csv
$csv:
a;b 1;First part, Part 2;Second part, Third part Есть такой csv файл, пытаюсь сделать поиск по полям так, чтобы каждая ячейка разбиралась в цикле foreach т.е если делаю поиск так: $csv | where { $_.b -match "part" } то выводятся все линии где есть part, а нужно чтобы при поиске в b например, выводилась только первая линия когда я ищу part в идеале думается нужно сделать цикл с разделителями запятые для каждой ячейки, только как это сделать не знаю:( хелп |
Цитата:
приведите содержимое csv-файла и полный код скрипта |
Вложений: 1
Заработался совсем row перепутал с column
|
Скрипта еще нет, смысл в том что нужно искать в csv файле: при поиске по 3-тей колонке например, выводилась только первая линия когда я ищу part, а не первая и третья т.к и там и там есть слово part
|
Код:
.... | Select-Object -First 1 |
выводилась только первая линия когда я ищу part
|
c4uran, чтобы ответить на твой вопрос нужно понимать объект какого типа у тебя в переменной $csv.
Загрузи в неё свой файл, затем посмотри вывод $csv | gm, если тип объекта TypeName: System.Management.Automation.PSCustomObject - тогда будет работать вот так: $csv.Item(3) | where какой-то фильтр Но вообще я так и не понял - ты хочешь искать среди всех значений в пределах одной строки и в качестве результата иметь содержимое "ячейки" или ты хочешь искать по всему файлу и выводить строку как результат поиска. Ну и еще не забывай что в твоем примере всего 3 строки, а нумерация идет с 0. Т.е. $csv.Item(3) это четвертая строка. |
Для начала, по-хорошему — дабы не гадать, нужны а) исходные данные в виде файла, б) код, который с ним работает.
|
Вложений: 1
Таблица в виде картинки, приложить csv файл нельзя
Скриптов пока нет, только идея Суть в том что в ячейках таблицы данные указываются через запятую и содержат схожие части значений например слово Part и если я начинаю искать значения в ячейках ( $csv | where $_.c -match "part" ) то получаю все строки где есть слово Part а нужно получать только строку где указано "Second part, Part" т.к там слово Part стоит отдельно (через запятую) мне кажется что перед поиском (where) нужно сделать цикл перебора значений в каждой ячейке с разделителем - запятая, т.е как-то так $csv | % {$csv.c | % { if ($_.split('"') -eq "part") { ... } } но чет я не понимаю как это сделать или хеш таблицу составлять на лету для каждой строки |
Цитата:
С картинкой работать никто не будет. |
да что-то я совсем не подумал...
В целом это же csv и для примера подойдет такое содержание: Код:
a;b |
Время: 23:16. |
Время: 23:16.
© OSzone.net 2001-