Статья размещена автором Бетке Сергей Сергеевич

PowerShell: convertFrom-Csv, delimiter и проблемы использования табуляции

Банальная задача – разбор .csv файла, в котором в качестве разделителя использована табуляция. Но убил 10 минут на эту задачу. Сразу пример кода:

get-content `
    -path $csvFile `
| convertFrom-csv -Delimiter ("`t".Normalize())

Обратили внимание на конструкцию ("`t".Normalize())? Это — самый просто путь, чтобы указать символ табуляции, который я нашёл. Очевидный на первый взгляд вариант '`t' не прошёл, вариант "`t" — тоже не прошёл. Видите ли — строка содержит два символа, а ожидается один. В общем и целом, как я понял, нормализацию (в том числе — и подстановка специальных символов типа табуляции) происходит в powerShell не на этапе интерпретации строковых констант, а уже при выводе строк! Поэтому, если Вы явно планируете анализировать текст и ждёте в нём специальные символы перед анализом — нормализуйте сначала свои строковые константы.

P.S. Вариант ('`t'.Normalize()) также не подходит. Специальные знаки ожидаются только в макростроке, в чистой строковой константе PoSh их не ждёт…

Опубликовать комментарий

XHTML: Вы можете использовать следующие HTML теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tags Связь с комментариями статьи:
RSS комментарии
Обратная ссылка