当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在PowerShell中逐行读取CSV文件

作者:精品下载站 日期:2024-12-14 17:25:37 浏览:14 分类:玩电脑

在PowerShell中逐行读取CSV文件


PowerShell 是一种多功能脚本语言,可为处理 CSV(逗号分隔)文件提供强大支持。其命令 Import-CSV 用于导入 CSV 文件,ForEach-Object cmdlet 用于在 PowerShell 中逐行读取 CSV 文件。

在 PowerShell 中逐行读取 CSV 文件对于处理日志和 CSV 等大型文件或对每一行应用自定义逻辑非常有用。

在本文中,我们将通过实际示例讨论如何使用 Import-CSV 和 ForEach-Object cmdlet 在 PowerShell 中逐行读取 CSV 文件。

在 PowerShell 中导入 CSV 文件

PowerShell 中的 Import-CSV cmdlet 用于导入 CSV 文件。

# Import csv file from the specified path
$teamInfo = Import-Csv -Path D:\PS\team_info.csv

# Print the $teamInfo variable to check data available in csv file
$teamInfo

在上面的 PowerShell 脚本中,Import-CSV cmdlet 将读取文件并将其内容存储在 $teamInfo 变量中。

读取 CSV 文件后脚本的输出为:

PS C:\> $teamInfo = Import-Csv -Path D:\PS\team_info.csv                                                                PS C:\>                                                                                                                 

PS C:\> $teamInfo                                                                                                       
Group Name Years
----- ---- -----
Dev   Tom  4
Sale  Aron 5


PS C:\>   

逐行读取 CSV 文件

要在 PowerShell 中逐行读取 CSV 文件,我们将使用 Import-CSV cmdlet 读取 CSV 的内容,并使用 ForEach-Object cmdlet 迭代行。

# Import csv file from the specified path
$teamInfo = Import-Csv -Path D:\PS\team_info.csv

$teamInfo | ForEach-Object {
        # Store the individual row in $row
        $row = $_
        Write-Host "Group Name:$($row.Group), Name: $($row.Name)"
        
}

在上面的 PowerShell 脚本中,Import-CSV 命令读取 CSV 文件并将内容存储在变量 $teamInfo 中。变量中的 CSV 数据通过管道运算符 (|) 传送到 ForEach-Object,以迭代行以进行进一步处理。

上述脚本逐行读取 CSV 文件后的输出为:

PS D:\PS> # Import csv file from the specified path
$teamInfo = Import-Csv -Path D:\PS\team_info.csv

$teamInfo | ForEach-Object {
        # Store the individual row in $row
        $row = $_
        Write-Host "Group Name:$($row.Group), Name: $($row.Name)"
        
}
Group Name:Dev, Name: Tom
Group Name:Sale, Name: Aron

从 CSV 文件中筛选特定行

让我们考虑一个示例,逐行读取大型 CSV 文件,以过滤文件中包含/特定列中的特定值的行。

# Import csv file from the specified path
$teamInfo = Import-Csv -Path D:\PS\team_info.csv

$teamInfo | ForEach-Object {
        # Check if the Group column contains "Dev" value
        if ($_.Group -eq "Dev") 
        {
            Write-Host "Dev Team Member Name: $($_.Name)"
        }
        
}

在上面的 PowerShell 脚本中,Import-CSV 命令读取 CSV 文件并将其存储在 $teamInfo 变量中。 ForEach-Object 命令循环访问行并筛选 CSV 中 Group 列包含值“Dev”的行。

从 CSV 文件中过滤特定行后,上述脚本的输出为:

PS D:\PS> # Import csv file from the specified path
$teamInfo = Import-Csv -Path D:\PS\team_info.csv

$teamInfo | ForEach-Object {
        
        if ($_.Group -eq "Dev") {
        Write-Host "Dev Team Member Name: $($_.Name)"
    }
        
        
}
Dev Team Member Name: Tom

PS D:\PS> 

酷提示:如何在 PowerShell 中使用 Export-CSV 命令导出到 CSV 文件!

结论

我希望上面关于如何使用 Import-CSV 和 ForEach-Object cmdlet 在 PowerShell 中逐行读取 CSV 文件的文章对您有所帮助。

您可以在 ShellGeek 主页上找到有关 PowerShell Active Directory 命令和 PowerShell 基础知识的更多主题。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯