在PowerShell中导入CSV会隐藏双引号

在PowerShell中导入CSV会隐藏双引号,csv,powershell,quotes,Csv,Powershell,Quotes,我导入文件并按如下方式处理其内容: $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 = 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
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 = 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
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返回了以下信息:

ein link:www.link.de

当我有这样一个内容文件时:

$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
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
导入CSV仅在双引号位于文本开头时隐藏双引号

我正在使用PowerShell 5.0

你能帮我吗


谢谢你试试这个也许它能用:

$msg = Get-Content .\content.csv |
       ForEach-Object { $_ -replace ('"','"""') } | 
       ConvertFrom-CSV -Delimiter "`t" | 
       Select msg | Format-Table -HideTableHeaders | 
       Out-String | %{$_ -replace "\n"}

谢谢你的回答。此解决方案解决了在开始时使用双引号的问题。但是现在,当我在文本中间某处有双引号时,我得到这样的输出:模具IST“”Ein Link“”:www.链接。de@FLX好的,我已经测试过了,并且使用了你的例子,但是“因为我不能测试我写的任何案例”“也许它有效”;)。您可以尝试用单引号替换双引号,这种方法在我的测试中有效。不幸的是,在我的情况下,不可能使用单引号代替双引号。还有其他解决方案吗?@FLX可能使用regex您可以匹配
:www
之前的所有内容,并将双引号添加到匹配项中。确定。现在,我将内容文件推入一个变量,并按如下方式处理:$content-replace'^(+++)\t“(++)”(++)$”,“$1
t”“”$2“$3”;所以我添加了两个双引号,可以通过导入csv删除。但是我不知道怎么把标签插回去t返回`t。。。