在PowerShell 1.0中使用字符串分割制表符

18

我正在使用PowerShell 1.0处理一个以制表符分隔的文本文件(ANSI格式),但是由于某些原因,我无法使用split函数将文件中的文本拆分成多个字段。即使每行文件中用制表符分隔了五个值,下面的代码始终返回1。

$f = get-content ‘users.txt’
foreach ($line in $f)
{
   $fields = $line.split('\t')
   $fields.count | Out-Host
}

我测试了使用其他分隔符,如竖线、逗号等,没有任何问题。


1
请展示您的文本文件内容,是否所有内容都在一行上? - ProfessionalAmateur
2个回答

28

您使用了错误的制表符转义字符。请改用以下内容:

$f = Get-Content "Users.txt"

foreach ($line in $f) {
    $fields = $line.Split("`t")
    $fields.Count | Out-Host
}

可以了,谢谢。不太清楚为什么要使用这种转义字符而不是常规的转义字符。 - kirill_l
2
然后您应该阅读有关引用规则和转义字符的帮助文档。 - OldFart
9
@kirill_l - 因为在 Windows 中路径中使用了 \ 字符,所以如果 \ 作为转义字符,路径就必须像 c:\\windows 这样指定。在像 Powershell 这样的脚本环境中,经常使用路径,因此需要这样做。 - manojlds

1
(Get-Content -LiteralPath C:\temp\Users.txt) | ForEach-Object {$_.Split("`t")} | Set-Content -Path C:\temp\Results.txt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接