Import-CSV в PowerShell скрывает двойные кавычки

Я импортирую файл и обрабатываю его содержимое следующим образом:

$msg = Import-Csv .\content -Delimiter "`t" | Select msg | Format-Table -HideTableHeaders | Out-String | %{$_ -replace "\n"}

В этом случае файл содержимого выглядит следующим образом:

id  name    when    ip  msg user_id
 50 Felix   2015-07-22 12:51:04 10.1.100.6  "ein link":www.link.de  89

Но $msg возвращает следующее:

ein link:www.link.de

Когда у меня есть контент-файл, подобный этому:

id  name    when    ip  msg user_id
 50 Felix   2015-07-22 12:51:04 10.1.100.6  dies ist "ein link":www.link.de 89

$msg правильно:

dies ist "ein link":www.link.de

Import-CSV скрывает двойные кавычки, только если они стоят в начале текста.

Я работаю с PowerShell 5.0

Можете вы помочь мне?

Спасибо


person FLX    schedule 22.07.2015    source источник


Ответы (1)


попробуйте это, может быть, это работает:

$msg = Get-Content .\content.csv |
       ForEach-Object { $_ -replace ('"','"""') } | 
       ConvertFrom-CSV -Delimiter "`t" | 
       Select msg | Format-Table -HideTableHeaders | 
       Out-String | %{$_ -replace "\n"}
person CB.    schedule 22.07.2015
comment
Спасибо за ваш ответ. Это решение решает проблему с двойными кавычками в начале. Но теперь, когда я ставлю двойные кавычки где-то в середине текста, я получаю такой вывод: dies ist ein link:www.link.de - person FLX; 22.07.2015
comment
@FLX Хорошо, я проверил это, и ваш пример работает, но потому что я не могу проверить ни один случай, который я написал «может быть, это работает»;). Вы можете попробовать заменить двойную кавычку одинарной, этот способ работает в моем тесте. - person CB.; 22.07.2015
comment
К сожалению, в моем случае нельзя использовать одинарные кавычки вместо двойных. Есть ли другое решение? - person FLX; 22.07.2015
comment
@FLX Возможно, используя регулярное выражение, вы можете сопоставить все до :www и добавить двойную кавычку к совпадению. - person CB.; 23.07.2015
comment
В порядке. Теперь я помещаю файл содержимого в переменную и обрабатываю его следующим образом: $content -replace '^(.+?)\t(.+?)(.+?)$', '$1t"""$2"$3'; So I add two double quotes which can be removed by import-csv. But I don't know how to insert the tab back. t возвращает `t . .. - person FLX; 24.07.2015