【问题标题】:Extract only the first 10 lines of a csv file in powershell在 powershell 中仅提取 csv 文件的前 10 行
【发布时间】:2015-05-08 15:21:02
【问题描述】:

我有一个 csv 文件,想输出一个新的 csv 文件,它只包含原始文件的前 10 行。 到目前为止,我只找到了删除单行或包含某个单词的行的代码。它可能是一个 15 个字符的单行,但我不知道如何处理这个问题,任何帮助将不胜感激。我不指望你写代码,只要正确的命令就能帮助我。

【问题讨论】:

    标签: powershell csv


    【解决方案1】:
    Get-Content in.csv -Head 10 > out.csv
    

    【讨论】:

    • 谢谢!超级快速和优雅!
    【解决方案2】:
    Get-Content "C:\start.csv" | select -First 10 | Out-File "C:\stop.csv"
    

    做到了

    【讨论】:

    • 这也是一个答案,但取决于文件的大小,使用-Head 10 的答案会更有效,因为它不必读取整个文件。
    • 不确定您使用的是哪个版本,但从 2.0 版开始,我收到一条消息,上面写着 Get-Content : A parameter cannot be found that match parameter name 'Head'。
    • 对于 powershell 2,请使用 emekm 的答案并在“Get-Content”cmdlet 上使用“-TotalCount”参数。
    • 我认为这不会读取整个文件,因为它是即时运行的 9GB 文件 (PowerShell 5.1)。我猜 C# 的 IEnumerable 类(或具有类似行为的东西)正在幕后用于所有这些命令和管道运算符。
    【解决方案3】:

    推荐使用 -TotalCount 参数。特别是,如果您有一个大的 CSV 文件。 这样,您将只读取 CSV 文件的前 10 行,而不是读取所有行,选择前 10 行并提取它们。

    Get-Content C:\Temp\Test.csv -TotalCount 3 | Out-File C:\Temp\Test10lines.csv
    

    这适用于 Powershell 2 及更高版本。

    【讨论】:

    • Linux 的等价物是什么?
    【解决方案4】:

    你也可以使用

    (Get-Content yourfile.csv)[0 .. 11]>outputfile.csv
    

    请务必包含标题行,否则您可能会遇到问题。您还可以更改数字以获取所需的任何行。 first 和 head 标志对我不起作用。

    【讨论】:

      【解决方案5】:

      Windows PowerShell

      Get-Content -First 10'C:\Users\jason\Desktop\big_file.csv'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-08
        • 2016-09-02
        • 2018-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多