在文本文件中查找一组词,并将该行提取到新文本文件中

在文本文件中查找一组词,并将该行提取到新文本文件中

我的文件参考文献包含单词“hi”,“hello”,“aloha”,如下所示:

hi
hello
aloha

我还有一个文件ABC文件其中包含很多单词,包括上述三个单词。

现在我开发了一个 powershell 批处理来搜索ABC文件并将包含单词的行提取到新文件中完成.txt。 我用-匹配命令来查找该单词。

如何使用该文件参考文献其中包含查找的单词,而不是在编码中声明单词?如果在命令执行程序或者电源外壳编码。请赐教。

$source = "C:\temp\abc.txt"  
$destination = "C:\temp\done.txt"
$hits = select-string -Path $source -SimpleMatch "hi","hello","aloha"  
$filecontents = get-content $source
foreach($hit in $hits) { 
    $filecontents[$hit.linenumber-1]| out-file -append 
    $destination "" |out-file -append $destination    
 }

答案1

据我了解,您希望使用 ref.txt 中的单词作为搜索条件,这样如果您有一个包含这些单词的文件 abc.txt,则包含这些单词的行将返回到文件 done.txt 中。这可以在 cmd.exe 中以几种方式之一轻松实现。

findstr /g:ref.txt abc.txt > done.txt

上述解决方案将返回包含任何单词的任何行(即使它们在句子中或另一个单词的一部分,例如 hi 和 high),但不区分大小写。

/R - Use regex
/I - Case insensitive search
/B - Match at the beginning of the line only
/E - Match at the end of the line only

因此,如果你只想匹配文件中的单词而不是匹配句子中的单词,你可以这样做 findstr /BE /g:ref.txt abc.txt > done.txt

答案2

您可以使用 powershell 命令get-content

它将为您提供一个字符串,您可以将其拆分\n以分别获取每一行。

PS C:\> get-content c:\ref.txt
hi
hello
aloha

将其拆分并保存在数组中。然后使用以下命令对每个项目执行您选择的操作

foreach ($element in $array) 
{ 
     /your code here/ 
}

您可以找到更多信息这里

如果要使用这三个词一起进行搜索匹配,只需将 替换为\n,然后将其放在命令后面-SimpleMatch

答案3

老问题,但它冒出来了......

该文件ref.txt可用于构造-Pattern选择字符串.Line所得的财产赛事信息然后可以通过管道将对象传输到设置内容

$WordList    = '.\ref.txt'
$Source      = '.\abc.txt'
$Destination = '.\done.txt'

$Pattern     = '(^|\W)' + (( Get-Content $WordList) -join '(\W|$)|(^|\W)' ) + '(\W|$)'

Select-String $Pattern $Source |
    Select -Expand Line |
       Set-Content $Destination

内容为abc.txt

bob
hi mom
Carol
well hello world
Ted
In Hawaii, we say aloha
Alice
"Hill" should not be matched

我们得到:

PS C:\...\Custom Word Search>$WordList    = '.\ref.txt'
>> $Source      = '.\abc.txt'
>> $Destination = '.\done.txt'
>>
>> $Pattern     = '(^|\W)' + ( (Get-Content $WordList) -join '(\W|$)|(^|\W)' ) + '(\W|$)'
>>
>> Select-String $Pattern $Source |
>>     Select -Expand Line |
>>        Set-Content $Destination
>>
PS C:\...\Custom Word Search>Get-Content .\done.txt
hi mom
hello world
In Hawaii, we say aloha
PS C:\...\Custom Word Search>

相关内容