gpt4 book ai didi

Powershell 文本搜索 - 多个匹配项

转载 作者:行者123 更新时间:2023-12-02 23:08:55 25 4
gpt4 key购买 nike

我有一组 .txt 文件,其中包含以下一个或两个字符串。

“红色”、“蓝色”、“绿色”、“橙色”、“紫色”,... 列表中还有更多(50 多种)可能性。

如果有帮助,我可以判断 .txt 文件是否包含一项或两项,但不知道它们是哪一项。字符串模式始终独占一行。

我希望脚本具体告诉我它找到的哪一个或两个字符串匹配(来自主列表),以及找到它们的顺序。 (哪个是第一个)

由于我有很多文本文件需要搜索,因此我想在搜索时将输出结果写入 CSV 文件。

FILENAME1,first_match,second_match

file1.txt,blue,red
file2.txt,red, blue
file3.txt,orange,
file4.txt,purple,red
file5.txt,purple,
...

我已经尝试使用许多单独的Select-Strings返回 bool 结果来设置与找到的任何匹配项的变量,但是随着可能的字符串数量的增加,它很快就会变得丑陋。我对这个问题的搜索结果没有给我提供新的想法来尝试。 (我确信我没有以正确的方式询问)

我需要循环遍历每个文件中的每一行文本吗?

我是否坚持通过检查每个搜索字符串是否存在来消除方法的过程?

我正在寻找一种更优雅的方法来解决这个问题。 (如果存在的话)

最佳答案

不是很直观,但很优雅......

以下 switch 语句

$regex = "(purple|blue|red)"

Get-ChildItem $env:TEMP\test\*.txt | Foreach-Object{
$result = $_.FullName
switch -Regex -File $_
{
$regex {$result = "$($result),$($matches[1])"}
}
$result
}

返回

C:\Users\Lieven Keersmaekers\AppData\Local\Temp\test\file1.txt,blue,red
C:\Users\Lieven Keersmaekers\AppData\Local\Temp\test\file2.txt,red,blue

哪里

  • file1 首先包含蓝色,然后包含红色
  • file2 首先包含 red,然后包含 blue

关于Powershell 文本搜索 - 多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49541115/

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