none
Powershell: найти дубли строк в CSV RRS feed

  • Вопрос

  • Здравствуйте!

    Не могу решить такую задачу:

    Есть CSV

    1;5;8;2;1

    3;4;1;7;0

    1;0;;5;5  // 2е поле пустое

    7;0;3;1;2

    Строчки 1 и 3 считаются одинаковыми, т.к. значение в первой колонке одинаковое. Надо обработать CSV таким образом, чтобы дублированные строчки, у которых 2е поле пустое, были исключены из CSV. Пробовал объявлять массив и по очереди скидывать туда проверенные строчки, но результат не выходит. Даже одинаковые строки идентифицировать не получается.

    20 февраля 2015 г. 11:17

Ответы

  • Get-Content file.csv | Group {$_.split(";")[0]} | Foreach {
    	if($_.Count -gt 1) {
    		$result = $_.Group | Where {$_.split(";")[2]}
    		if($result) {$result} else {$_.Group[0]}
    	} 
    	else {$_.Group}
    }

    • Предложено в качестве ответа Vector BCOModerator 20 февраля 2015 г. 14:43
    • Помечено в качестве ответа free-bsd 20 февраля 2015 г. 15:18
    20 февраля 2015 г. 14:34
    Отвечающий
  • Get-Content file.csv | Group {$_.split(";")[0]} | Foreach {if($_.Count -gt 1){$_.Group | Where {$_.split(";")[2]}} else {$_.Group}}


    • Изменено KazunEditor 20 февраля 2015 г. 11:35
    • Помечено в качестве ответа free-bsd 20 февраля 2015 г. 11:58
    20 февраля 2015 г. 11:32
    Отвечающий

Все ответы

  • Get-Content file.csv | Group {$_.split(";")[0]} | Foreach {if($_.Count -gt 1){$_.Group | Where {$_.split(";")[2]}} else {$_.Group}}


    • Изменено KazunEditor 20 февраля 2015 г. 11:35
    • Помечено в качестве ответа free-bsd 20 февраля 2015 г. 11:58
    20 февраля 2015 г. 11:32
    Отвечающий
  • Спасибо!

    А как оставлять одну строку, если ни у одного из дублей не встречается 2е поле?

    Пример:

    1;5;;2;1

    1;0;;5;5

    Как получить в CSV первое совпадение? (любую из этих строк)

    20 февраля 2015 г. 14:23
  • Get-Content file.csv | Group {$_.split(";")[0]} | Foreach {
    	if($_.Count -gt 1) {
    		$result = $_.Group | Where {$_.split(";")[2]}
    		if($result) {$result} else {$_.Group[0]}
    	} 
    	else {$_.Group}
    }

    • Предложено в качестве ответа Vector BCOModerator 20 февраля 2015 г. 14:43
    • Помечено в качестве ответа free-bsd 20 февраля 2015 г. 15:18
    20 февраля 2015 г. 14:34
    Отвечающий
  • Добрый день, Kazun, ты мастер, не вижу не решенных тобой задач на PS :)
    Предлагаю переименовать твой ник на PS джедай :)
    20 февраля 2015 г. 18:10