txt包含单词" hi" "你好" "阿罗哈"如下所示
hi
hello
aloha
我还有一个文件abc.txt包含很多单词,包括上面的3个单词。现在,我开发了一个PowerShell脚本来搜索abc.txt中的单词,并将包含单词的行提取到新文件done.txt
。我用
-match
命令查找单词。
如何使用包含查找单词的文件ref.txt,而不是在编码中声明单词?
我想在cmd.exe而不是PowerShell中开发它。
$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
}
答案 0 :(得分:1)
这应该做批处理技巧:
findstr /G:ref.txt abc.txt >> done.txt
这会在ref.txt
到abc.txt
done.txt
中包含叮咬的所有行
我是否正确理解了您的问题?
答案 1 :(得分:0)
要涵盖此问题的PowerShell方面......
要从文件中获取所需的模式非常简单,因为Select-String
支持-Pattern
参数的字符串数组。在最简单的形式,你可以做这样的事情
$patterns = Get-Content c:\temp\ref.txt | Where-Object{$_}
$hits = Select-String c:\temp\test.txt -Pattern $patterns -SimpleMatch
您的文件中包含空白,我不确定是否有意。我使用Where-Object{$_}
来过滤以防万一。然后将该字符串数组$patterns
传递给参数-Pattern
。
之后的其余代码可能会稍微调整一下。 no 需要再次读取源文件才能再次输出匹配项。您的输出只是跟随换行符的匹配行。
$patterns = Get-Content c:\temp\ref.txt | Where-Object{$_}
$results = Select-String c:\temp\test.txt -Pattern $patterns -SimpleMatch
$results.Line | ForEach-Object{"$_`r`n"} | Set-Content C:\temp\out.txt
可能不是获得所需输出的最佳方式,但无论如何都应该有效。