首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell import-csv -自动识别分隔符?

Powershell import-csv -自动识别分隔符?
EN

Stack Overflow用户
提问于 2019-11-23 00:22:13
回答 2查看 670关注 0票数 3

因此,我使用在不同位置生成的一些CSV文件。例如,服务器与我的笔记本电脑具有不同的区域设置,因此文件可以由分隔,或者;如果我没有指定-delimiter参数,powershell似乎根本无法看到CSV文件是通过分隔的,所以可以使用它!我想有一个通用的脚本,它不关心的CSV文件来源。在您不知道分隔符的情况下,正确导入CSV文件的唯一方法似乎是这样:

代码语言:javascript
复制
$line=gc "list1.csv"|select -first 1
if($line-like "*,*" -and -not ($line-like "*;*")){
    $list1=Import-Csv "list1.csv" -Delimiter ","
}else{
    $list1=Import-Csv "list1.csv" -Delimiter ";"
}

谁有更好的主意?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-23 00:45:52

不是更好的主意,只是重构:

代码语言:javascript
复制
$line = Get-Content "list1.csv" | Select -First 1
$delimiter = if($line.Split(";").Length -gt 1){";"}else{","};
$list1 = Import-Csv "list1.csv" -Delimiter $delimiter

当然,只有当您的分隔符是,;时,这才有效。

票数 1
EN

Stack Overflow用户

发布于 2019-11-23 00:42:22

在PowerShell中使用switch可以很容易地使其更具可读性

PowerShell上没有任何东西可以自动确定分隔符。您可以使用以下switch语句创建一个可以执行此操作的函数:

代码语言:javascript
复制
$a = $line -like "*,*"
$b = $line -like "*;*"

switch($True) {
  $a    {Import-Csv "list.csv" -Delimiter ","}
  $b    {Import-Csv "list.csv" -Delimiter ";"}
  Default {Write-Error "Cannot determine delimiter"}
}

但是,如果要添加不同的分隔符,则必须确定逻辑。那就交给你去做吧:)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58998109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档