根据术语列表将句子提取到另一个文件

Extracting sentences to another file based on term list

我有两个 txt 文件:一个包含短语列表(比如 term.txt),第二个文件很大,有很多句子 (src.txt)。我正在寻找一种方法来将 一个 句子与 term.txt 中的每一行相匹配,并将其提取到单独的 txt 文件中。

然后我想将它们复制并粘贴到 Excel 中,这样行与行之间就没有 "mismatch"(因此即使某些术语没有匹配项,它们也会相互解析)

我设法挖掘出的最接近的东西是: findstr /g:term.txt src.txt > done.txt

但是如果术语不匹配,这会提取重复项并且不会留下空行。 示例:

条款:

暂停

车轮

套管

根据以下术语提取的句子:

A 悬架 连杆机构形成 A 或 V 形,常见于前悬架。

A 型臂两条腿的侧面通过橡胶 衬套 连接到底盘,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。

@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(解释变量在 [=30 处的状态)处理关键字文件中每个条目的临时文件=]-时间)来控制输出。

如果您断言 wheel 不在提供的文本中是准确的,事情会更简单。