【问题标题】:In Powershell how can I use lines in a CSV to search a text file and return multiple lines to another CSV?在 Powershell 中,如何使用 CSV 中的行来搜索文本文件并将多行返回到另一个 CSV?
【发布时间】:2021-09-08 07:35:57
【问题描述】:

我正在尝试做的示例。

我有 CSV_A.CSV,其中包含一个关键字列表(每个都在一个新行上),例如:apple、orange、pear。请注意,这些关键字仅在 TEXT_FILE 中出现 1 次。

我有一个包含 1000 行的文本文件 TEXT_FILE.TXT。我需要一个脚本,它会在 TEXT_FILE 中搜索苹果,然后是橙色,然后是梨,并返回它的行以及接下来的 5 行。

因此,最终结果将是一个包含 15 行的文件,其中 3 个关键字各 5 行。

目前我已经尝试了以下代码,它给了我每个关键字的第一行,但仅此而已。

# path
$path = 'C:\Users\Documents\4_Testing\TEXT_FILE.TXT'


Import-Csv .\CSV_A.csv | ForEach-Object {
    Get-ChildItem -Path $path | Select-String -Pattern "$($_.KeywordColumn)\(" -Context 0, 5 |
    Select-Object Line |
    add-content -path 'C:\Users\Documents\4_Testing\Output.csv'
}

【问题讨论】:

    标签: windows powershell powershell-3.0


    【解决方案1】:

    改变这一行:

    Select-Object Line |
    

    到:

    ForEach-Object { @($_.Line;$_.Context.PostContext) } |
    

    这样,每次匹配都会产生一个由 6 个字符串组成的数组 - 匹配的行,以及后面的五个。

    【讨论】:

    • 哇,你是最棒的!谢谢!
    猜你喜欢
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 2017-06-07
    相关资源
    最近更新 更多