gpt4 book ai didi

powershell - 如何从文本文件中提取特定行

转载 作者:行者123 更新时间:2023-12-03 00:59:41 42 4
gpt4 key购买 nike

我有一个大日志文件 (user.log) ,例如:

   2019-10-02 00:03:55.407095
2019-10-02 00:03:55.410345
2019-10-02 00:03:55.410765
2019-10-02 00:03:55.411187
2019-10-02 00:03:55.411791
2019-10-02 00:03:55.412657

我如何从日志文件中提取第 3 行作为;

2019-10-02 00:03:55.410765

通过使用powershell脚本?

最佳答案

A 适用于处理大型输入文件的简单且节省内存的方法 是结合Get-ContentSelect-Object :

Get-Content user.log | Select-Object -Skip 2 -First 1
  • -Skip 2指示Select-Object跳过 Get-Content 输出的前 2 条输入行.
  • 因此,第 3 行是 Select-Object 第一个处理并输出的行。 , 和 -First 1使它在之后立即停止处理,以便不需要读取文件的其余部分。


  • A 更快的方法 , 如果文件中达到所需行号的部分足够小,可以作为一个整体放入内存 :
    (Get-Content -TotalCount 3 -ReadCount -3 user.log)[-1]
  • -TotalCount 3告诉 Get-Content总共阅读 3 行(最多)。
  • -ReadCount 3另外告诉Get-Content一次将所有 3 行读入一个数组并将其作为单个对象通过管道发送 - 而不是逐行 - 这不是必需的,但会加快命令的速度。
  • [-1]然后从结果数组中提取最后一个元素,即第 3 行。


  • 如果输入文件整体较小,以下解决方案最简单:
    (Get-Content user.log)[2]  # add -ReadCount 0 to speed things up

    Get-Content读取所有行,其中 (...)收集到内存中的数组中, [2]访问数组的第三个元素,即第三行。

    加快此解决方案的一种简单方法是添加 -ReadCount 0 , 这使得 Get-Content将所有输入行的数组本身作为单个输出对象发出,而不是一一发出行并让 (...)之后将它们收集在一个数组中。

    关于powershell - 如何从文本文件中提取特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58228341/

    42 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com