我有两个txt文件:一个包含短语列表(比如term.txt),第二个是巨大的文件,包含很多句子(src.txt)。我正在寻找一种方法将单个句子与term.txt中的每一行匹配,并将其提取为单独的txt文件。
然后我想将它们复制并粘贴到Excel中,这样就没有"不匹配"在行之间(因此即使某些术语没有匹配,它们也会相互解析)
我设法挖出的最接近的事情是: findstr /g:term.txt src.txt> done.txt
但如果术语不匹配,则会提取重复项并且不会留空行。 例如:
条款:
悬浮液
轮
衬套
基于此条款提取的句子:
悬架连杆形成为前悬架上常见的A或V形状。
A臂的两条腿的两侧通过橡胶衬套连接到底盘,A臂的顶部连接到车轮组件。
悬挂支柱被称为阻尼支柱或麦弗逊支柱
通缉输出:
悬架连杆形成为前悬架上常见的A或V形状。
空行,因为没有匹配的轮子
A臂的两条腿的两侧通过橡胶衬套连接到底盘,A臂的顶部连接到车轮组件。
有什么办法可以用一些批处理文件/ cmd文件来完成吗?或其他什么?
非常欢迎任何帮助......
还尝试了以下代码:
1个脚本:
$Output = select-string -path "d:\test\src.txt" -pattern "d:\test\term.txt".
$Output.line | out-file d:\test\outputfile.txt -append
第二个剧本:
$log = get-content d:\test\src.txt
foreach ($line in $log) {
if ($line -like "d:\test\term.txt") {
$line | out-file -FilePath "d:\test\outputfile.txt" -Append
}
}
我正在使用Windows。
答案 0 :(得分:1)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q45513390.txt"
SET "filename2=%sourcedir%\q45513390_t.txt"
SET "outfile=%destdir%\outfile.txt"
findstr /g:"%filename2%" "%filename1%" >tempfile.txt
(
FOR /f "usebackqdelims=" %%a IN ("%filename2%") DO (
SET "found="
FOR /f "delims=" %%x IN (
'findstr /L /c:"%%a" "tempfile.txt" '
) DO IF NOT DEFINED found (
SET "found=Y"
ECHO %%x
)
REM use only one of the following lines
IF NOT DEFINED found ECHO.
IF NOT DEFINED found ECHO ---%%a--- NOT found
)
)>"%outfile%"
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了包含您的数据的q45513390.txt
和q45513390_t.txt
文件进行测试。
生成定义为%outfile%
的文件当然,临时文件可以有你喜欢的任何名称。我没有在代码中删除它。
首先将所需信息提取到临时文件,然后使用found
标志和if defined
(在运行时解释变量的状态)处理关键字文件中每个条目的临时文件控制输出。
如果您提供的wheel
所提供的文本中的{{1}}不准确,那会更简单。