根据术语列表将句子提取到另一个文件
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
您需要更改 sourcedir
和 destdir
的设置以适合您的情况。
我使用了名为 q45513390.txt
和 q45513390_t.txt
的文件,其中包含您的数据用于我的测试。
生成定义为 %outfile%
的文件
当然,临时文件可以有任何你喜欢的名字。我没有在代码中删除它。
首先将所需信息提取到临时文件,然后使用 found
标志和 if defined
(解释变量在 [=30 处的状态)处理关键字文件中每个条目的临时文件=]-时间)来控制输出。
如果您断言 wheel
不在提供的文本中是准确的,事情会更简单。
我有两个 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
您需要更改 sourcedir
和 destdir
的设置以适合您的情况。
我使用了名为 q45513390.txt
和 q45513390_t.txt
的文件,其中包含您的数据用于我的测试。
生成定义为 %outfile%
的文件当然,临时文件可以有任何你喜欢的名字。我没有在代码中删除它。
首先将所需信息提取到临时文件,然后使用 found
标志和 if defined
(解释变量在 [=30 处的状态)处理关键字文件中每个条目的临时文件=]-时间)来控制输出。
如果您断言 wheel
不在提供的文本中是准确的,事情会更简单。