PDA

Показать полную графическую версию : Разбор ячеек при поиске в csv


c4uran
15-01-2019, 11:05
$csv:
a;b
1;First part, Part
2;Second part, Third part


Есть такой csv файл, пытаюсь сделать поиск по полям так, чтобы каждая ячейка разбиралась в цикле foreach

т.е если делаю поиск так:
$csv | where { $_.b -match "part" }

то выводятся все линии где есть part, а нужно чтобы при поиске в b например, выводилась только первая линия когда я ищу part
в идеале думается нужно сделать цикл с разделителями запятые для каждой ячейки, только как это сделать не знаю:( хелп

Busla
15-01-2019, 12:50
при поиске в row3 например, выводилась только первая линия »
row = линия (строка в таблице). Почему при поиске в третьей строке должна выводиться первая?

приведите содержимое csv-файла и полный код скрипта

c4uran
15-01-2019, 13:33
Заработался совсем row перепутал с column

c4uran
15-01-2019, 13:38
Скрипта еще нет, смысл в том что нужно искать в csv файле: при поиске по 3-тей колонке например, выводилась только первая линия когда я ищу part, а не первая и третья т.к и там и там есть слово part

Kazun
15-01-2019, 14:13
.... | Select-Object -First 1

c4uran
15-01-2019, 14:15
выводилась только первая линия когда я ищу part

Charg
15-01-2019, 16:10
c4uran, чтобы ответить на твой вопрос нужно понимать объект какого типа у тебя в переменной $csv.
Загрузи в неё свой файл, затем посмотри вывод $csv | gm, если тип объекта TypeName: System.Management.Automation.PSCustomObject - тогда будет работать вот так:

$csv.Item(3) | where какой-то фильтр

Но вообще я так и не понял - ты хочешь искать среди всех значений в пределах одной строки и в качестве результата иметь содержимое "ячейки" или ты хочешь искать по всему файлу и выводить строку как результат поиска.

Ну и еще не забывай что в твоем примере всего 3 строки, а нумерация идет с 0. Т.е. $csv.Item(3) это четвертая строка.

Iska
15-01-2019, 17:15
Для начала, по-хорошему — дабы не гадать, нужны а) исходные данные в виде файла, б) код, который с ним работает.

c4uran
17-01-2019, 09:56
Таблица в виде картинки, приложить csv файл нельзя
Скриптов пока нет, только идея

Суть в том что в ячейках таблицы данные указываются через запятую и содержат схожие части значений например слово Part
и если я начинаю искать значения в ячейках ( $csv | where $_.c -match "part" ) то получаю все строки где есть слово Part

а нужно получать только строку где указано "Second part, Part" т.к там слово Part стоит отдельно (через запятую)

мне кажется что перед поиском (where) нужно сделать цикл перебора значений в каждой ячейке с разделителем - запятая, т.е как-то так $csv | % {$csv.c | % { if ($_.split('"') -eq "part") { ... } }
но чет я не понимаю как это сделать или хеш таблицу составлять на лету для каждой строки

Iska
17-01-2019, 15:18
приложить csv файл нельзя »
Можно приложить архив. А ещё архив можно выложить на какой-нибудь DropMeFiles.com, а ссылку — сюда.

С картинкой работать никто не будет.

c4uran
18-01-2019, 19:08
да что-то я совсем не подумал...

В целом это же csv и для примера подойдет такое содержание:

a;b
1;First part, Part
2;Second part, Third part




© OSzone.net 2001-2012