none
Выполнить поиск по CSV и взять значение из той же строки RRS feed

  • Вопрос

  • Добрый день!

    В Powershell-скрипте требуется кусок кода, который должен:

    1) подгружать CSV-файл, состоящий из двух столбцов (слово на кириллице и через ; оно же на транслите)

    2) Выполнить поиск по CSV с кириллическим текстом, записать соседнее значение на транслите.

    Например, в скрипте обрабатывается слово Москва. Надо залезть в CSV, получить Moskva и записать значение. Подозреваю, что сделать легко, но не знаю как. В CSV колонки никак не называются, обработать в цикле мне не представляется как. Нужно написать что-то типа If ($source -match "Москва"){}. При этом, как взять из CSV слово Moskva - не знаю.

    2 декабря 2014 г. 12:56

Ответы

Все ответы

  • (Select-String -Path file.csv -SimpleMatch Москва).Line.Split(";")[1]
    • Помечено в качестве ответа free-bsd 2 декабря 2014 г. 13:25
    2 декабря 2014 г. 13:12
    Отвечающий
  • Работает, спасибо!
    2 декабря 2014 г. 13:25
  • Уважаемый kazun,

    а как заставить simplematch прогонять только по первому столбцу?

    Это к вопросу, если совпадений много.

    5 декабря 2014 г. 8:03
  • Уважаемый kazun,

    а как заставить simplematch прогонять только по первому столбцу?

    Это к вопросу, если совпадений много.


    Столбца два, один с русским, другой с латиницей. Так что явно по второму столбцу поиск не ведется. Если требуется только первое совпадение, то добавить параметр -List. Или описать задачу более конкрентно, что есть и какой конечный результат требуется.
    5 декабря 2014 г. 8:10
    Отвечающий
  • Есть 2 столбца, первый с кириллицей, второй с латиницей. Добавляется третий, где может встречаться слово кириллицей. Надо, чтобы simplematch игнорировал третий столбец и искал слово Москва только в первом. -List тут не подходит, т.к. первое вхождение может встретиться и в 3 столбце.
    • Изменено free-bsd 5 декабря 2014 г. 8:29
    5 декабря 2014 г. 8:20
  • (Select-String -Path file.csv -Pattern "^Москва" -List).Line.Split(";")[1]

    Или

    Import-Csv -Path file.csv -Delimiter ";" -Header Rus,Tran,Anoth | Where {$_.Rus -match "Москва"} |Foreach {$_.Tran}


    • Изменено KazunEditor 5 декабря 2014 г. 8:24
    • Помечено в качестве ответа free-bsd 5 декабря 2014 г. 8:29
    5 декабря 2014 г. 8:23
    Отвечающий
  • Спасибо!
    5 декабря 2014 г. 8:28