Показать полную графическую версию : Разбор ячеек при поиске в csv
$csv:
a;b
1;First part, Part
2;Second part, Third part
Есть такой csv файл, пытаюсь сделать поиск по полям так, чтобы каждая ячейка разбиралась в цикле foreach
т.е если делаю поиск так:
$csv | where { $_.b -match "part" }
то выводятся все линии где есть part, а нужно чтобы при поиске в b например, выводилась только первая линия когда я ищу part
в идеале думается нужно сделать цикл с разделителями запятые для каждой ячейки, только как это сделать не знаю:( хелп
при поиске в row3 например, выводилась только первая линия »
row = линия (строка в таблице). Почему при поиске в третьей строке должна выводиться первая?
приведите содержимое csv-файла и полный код скрипта
Заработался совсем 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) это четвертая строка.
Для начала, по-хорошему — дабы не гадать, нужны а) исходные данные в виде файла, б) код, который с ним работает.
Таблица в виде картинки, приложить csv файл нельзя
Скриптов пока нет, только идея
Суть в том что в ячейках таблицы данные указываются через запятую и содержат схожие части значений например слово Part
и если я начинаю искать значения в ячейках ( $csv | where $_.c -match "part" ) то получаю все строки где есть слово Part
а нужно получать только строку где указано "Second part, Part" т.к там слово Part стоит отдельно (через запятую)
мне кажется что перед поиском (where) нужно сделать цикл перебора значений в каждой ячейке с разделителем - запятая, т.е как-то так $csv | % {$csv.c | % { if ($_.split('"') -eq "part") { ... } }
но чет я не понимаю как это сделать или хеш таблицу составлять на лету для каждой строки
приложить csv файл нельзя »
Можно приложить архив. А ещё архив можно выложить на какой-нибудь DropMeFiles.com, а ссылку — сюда.
С картинкой работать никто не будет.
да что-то я совсем не подумал...
В целом это же csv и для примера подойдет такое содержание:
a;b
1;First part, Part
2;Second part, Third part
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.