Powershell:如何从 csv Header 的字符串中删除引号
Powershell: How to delete quotes from string for csv Header
我想执行以下操作:
$content = $source | ConvertFrom-Csv -Header $HEADER
我的问题是变量 $HEADER。我使用 Get-Content 来获取所需的内容。不幸的是,这会在 object 周围添加引号,因此 -Header 将列列表视为一列并忽略逗号。
如果我回显 $HEADER 我得到以下信息:
"a","b","c"
但它被视为:
'"a","b","c"'
如果我像这样覆盖 $HEADER 一切正常:
$HEADER = "a","b","c"
不幸的是我需要使用 Get-Content 因为我的 Header 需要可变。
我相信 -remove "'", ""
只会删除字符串中的字符而不是周围的引号。
非常感谢任何帮助:)
$header = '"a","b","c"';
$header = $header.Split(',');
$HEADER = "a","b","c"
是一个数组,而 '"a","b","c"'
是一个字符串。
所以你应该拆分它以获得你想要的输出。
Get-Content
(没有开关 -Raw
)将文本文件读取为行数组,所以是的,然后 header(以及所有剩余数据)不会分成字段。
Import-Csv
将从现有 header 或 headers 您使用参数 -Header
.
将其作为字符串数组提供
Export-Csv
将始终引用所有内容,无论是 header 还是数据字段,除非您使用的是 PowerShell 版本 7 并将 -UseQuotes AsNeeded
添加到 cmdlet。
仅仅尝试删除 CSV 文件中的所有引号会导致字段顺序出现 mis-alignment 风险,并导致 csv 文件无法使用。有一种安全的方法可以做到这一点,请参阅我的函数 ConvertTo-CsvNoQuotes
我想执行以下操作:
$content = $source | ConvertFrom-Csv -Header $HEADER
我的问题是变量 $HEADER。我使用 Get-Content 来获取所需的内容。不幸的是,这会在 object 周围添加引号,因此 -Header 将列列表视为一列并忽略逗号。
如果我回显 $HEADER 我得到以下信息:
"a","b","c"
但它被视为:
'"a","b","c"'
如果我像这样覆盖 $HEADER 一切正常:
$HEADER = "a","b","c"
不幸的是我需要使用 Get-Content 因为我的 Header 需要可变。
我相信 -remove "'", ""
只会删除字符串中的字符而不是周围的引号。
非常感谢任何帮助:)
$header = '"a","b","c"';
$header = $header.Split(',');
$HEADER = "a","b","c"
是一个数组,而 '"a","b","c"'
是一个字符串。
所以你应该拆分它以获得你想要的输出。
Get-Content
(没有开关 -Raw
)将文本文件读取为行数组,所以是的,然后 header(以及所有剩余数据)不会分成字段。
Import-Csv
将从现有 header 或 headers 您使用参数 -Header
.
Export-Csv
将始终引用所有内容,无论是 header 还是数据字段,除非您使用的是 PowerShell 版本 7 并将 -UseQuotes AsNeeded
添加到 cmdlet。
仅仅尝试删除 CSV 文件中的所有引号会导致字段顺序出现 mis-alignment 风险,并导致 csv 文件无法使用。有一种安全的方法可以做到这一点,请参阅我的函数 ConvertTo-CsvNoQuotes