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 их не ждёт…
RSS комментарии
Обратная ссылка