迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 Windows PowerShell 中逐行读取文件

作者:迹忆客 最近更新:2024/02/01 浏览次数:

在 Windows PowerShell 中,我们可以使用 Get-Content cmdlet 从文件中读取文件。但是,该 cmdlet 会立即将整个文件内容加载到内存中,这会导致大文件失败或冻结。

为了解决这个问题,我们可以做的是我们可以逐行读取文件,本文将向你展示如何。

在开始之前,最好创建一个包含多行的示例文本文件。例如,我创建了一个包含以下行的 file.txt

file.txt

one
two
three
four
five
six
seven
eight
nine
ten

根据微软的说法,正则表达式是一种用于匹配文本的模式。它可以由文字字符、运算符和其他结构组成。本文将尝试不同的脚本,其中涉及一个称为正则表达式的标准变量,用 $regex 表示。


改进 Get-Content Cmdlet 语法

我们最初讨论过 Get-Content cmdlet 在我们加载大文件时存在缺陷,因为它会将文件的内容一次全部加载到内存中。但是,我们可以通过使用 foreach 循环逐行加载来改进它。

示例代码:

foreach($line in Get-Content .\file.txt) {
    if($line -match $regex){
        Write-Output $line
    }
}

使用 switch 加载特定行

我们可以使用 $regex 变量通过创建自定义 $regex 值并在 switch case 函数中匹配它来输入文件中的特定行。

示例代码:

$regex = '^t'

switch -regex -file file.txt {
  $regex { "line is $_" } 
}

输出:

line is two
line is three
line is ten

在这个例子中,我们定义了一个自定义值 $regex,它只匹配并显示以字符 t 开头的行。


使用 PowerShell 中的 [System.IO.File] 类逐行读取文件

如果你有权访问 .NET 库,则可以使用 [System.IO.File] 类从文件中读取内容。它是 Get-Content 的绝佳替代品,因为你不需要正则表达式来逐行处理文件。

示例代码:

foreach($line in [System.IO.File]::ReadLines("C:\yourpathhere\file.txt"))
{
    Write-Output $line
}

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Windows PowerShell 中获取命令行参数

发布时间:2024/03/04 浏览次数:358 分类:编程语言

本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。

Windows PowerShell 中的 Base64 编码

发布时间:2024/03/04 浏览次数:332 分类:编程语言

本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。

在 Windows PowerShell 中写入输出

发布时间:2024/03/04 浏览次数:259 分类:编程语言

本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。

在 PowerShell 中注释代码

发布时间:2024/03/04 浏览次数:363 分类:编程语言

本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便