根据术语列表

时间:2017-08-04 18:30:19

标签: batch-file cmd text-extraction

我有两个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。

1 个答案:

答案 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

您需要更改sourcedirdestdir的设置以适合您的具体情况。

我使用了包含您的数据的q45513390.txtq45513390_t.txt文件进行测试。

生成定义为%outfile%

的文件

当然,临时文件可以有你喜欢的任何名称。我没有在代码中删除它。

首先将所需信息提取到临时文件,然后使用found标志和if defined(在运行时解释变量的状态)处理关键字文件中每个条目的临时文件控制输出。

如果您提供的wheel所提供的文本中的{{1}}不准确,那会更简单。