Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Разбор ячеек при поиске в csv (http://forum.oszone.net/showthread.php?t=338741)

c4uran 15-01-2019 11:05 2852331

Разбор ячеек при поиске в csv
 
$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 2852348

Цитата:

Цитата c4uran
при поиске в row3 например, выводилась только первая линия »

row = линия (строка в таблице). Почему при поиске в третьей строке должна выводиться первая?

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

c4uran 15-01-2019 13:33 2852353

Вложений: 1
  • 123.png (4.60 KB, скачиваний: 24)
Заработался совсем row перепутал с column

c4uran 15-01-2019 13:38 2852355

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

Kazun 15-01-2019 14:13 2852361

Код:

.... | Select-Object -First 1

c4uran 15-01-2019 14:15 2852363

выводилась только первая линия когда я ищу part

Charg 15-01-2019 16:10 2852386

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

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

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

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

Iska 15-01-2019 17:15 2852405

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

c4uran 17-01-2019 09:56 2852802

Вложений: 1
  • 123.png (4.60 KB, скачиваний: 27)
Таблица в виде картинки, приложить 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 2852888

Цитата:

Цитата c4uran
приложить csv файл нельзя »

Можно приложить архив. А ещё архив можно выложить на какой-нибудь DropMeFiles.com, а ссылку — сюда.

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

c4uran 18-01-2019 19:08 2853155

да что-то я совсем не подумал...

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

Код:

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



Время: 23:16.

Время: 23:16.
© OSzone.net 2001-