标题: 20元求批处理提取2.txt在1.txt中没有的行 [打印本页]
作者: 741474719 时间: 2018-11-22 10:41 标题: 20元求批处理提取2.txt在1.txt中没有的行
报酬20元人民币
提取2txt在1txt中没有的行
手上有个能用的,但是速度太慢了,我有几百万数据需要处理
微信付款:18971801994
这有个示例:- @echo off
- cls
- echo.
- echo.
- echo 比较文本提取不重复
- echo,
- echo 如有:1.txt 2.txt,提取2.txt在1.txt里没有的行
- echo 文本2.txt应当比1.txt多一些内容。
- echo 重复的不要
- echo.
- set /p wb1=请输入要处理的[路径]文本2:
- set /p wb2=请输入要处理的[路径]文本1:
- set /p wb3=请输入处理后生成的[路径]文本:
- for /f "delims=" %%c in (%wb1%) do (
- findstr "%%c" %wb2%>nul ||echo %%c>>%wb3%)
- echo 处理完成
- ping /n 2 127.0.1 >nul
- goto :eof
复制代码
作者: 741474719 时间: 2018-11-22 11:28
已处理,各位老铁
作者: Batcher 时间: 2018-11-22 11:56
回复 2# 741474719
代码发出来给大家分享一下吧,看看是否可以进一步优化。
作者: 741474719 时间: 2018-11-22 17:32
回复 3# Batcher
@echo off
cd /d "%~dp0"
set wb1=1.txt
set wb2=2.txt
set wb3=3.txt
powershell ^
$dict=New-Object 'System.Collections.Generic.Dictionary[[string],[int]]';^
$text1=[IO.File]::ReadAllText('%wb1%', [Text.Encoding]:efault).split(\"`r`n\",[StringSplitOptions]::RemoveEmptyEntries);^
$text2=[IO.File]::ReadAllText('%wb2%', [Text.Encoding]::Default).split(\"`r`n\",[StringSplitOptions]::RemoveEmptyEntries);^
$fs=New-Object System.IO.FileStream('%wb3%', [System.IO.FileMode]::Create);^
$sw=New-Object System.IO.StreamWriter($fs, [Text.Encoding]::Default);^
for($i=0;$i -lt $text1.length;$i++){^
if(-not $dict.ContainsKey($text1[$i])){^
$dict.add($text1[$i],1);^
};^
};^
for($i=0;$i -lt $text2.length;$i++){^
if(-not $dict.ContainsKey($text2[$i])){^
$sw.WriteLine($text2[$i]);^
};^
};^
$sw.Flush();^
$sw.Close();^
$fs.Close();^
$sw.Dispose();^
$fs.Dispose();
pause
作者: 741474719 时间: 2018-11-22 17:33
@echo off
cls
echo.
echo.
echo 比较文本提取不重复
echo,
echo 如有:1.txt 2.txt,提取2.txt在1.txt里没有的行
echo 文本2.txt应当比1.txt多一些内容。
echo 重复的不要
echo.
set /p wb1=请输入要处理的[路径]文本2:
set /p wb2=请输入要处理的[路径]文本1:
set /p wb3=请输入处理后生成的[路径]文本:
for /f "delims=" %%c in (%wb1%) do (
findstr "%%c" %wb2%>nul ||echo %%c>>%wb3%)
echo 处理完成
ping /n 2 127.0.1 >nul
goto :eof
作者: 741474719 时间: 2018-11-22 17:34
屌的一比,牛逼牛逼
作者: flashercs 时间: 2018-11-22 18:57
本帖最后由 flashercs 于 2018-11-22 19:07 编辑
楼主最好把时间对比发出来,看看差距多少?- @echo off
- cls
- echo.
- echo.
- echo 比较文本提取不重复
- echo,
- echo 如有:1.txt 2.txt,提取2.txt在1.txt里没有的行
- echo 文本2.txt应当比1.txt多一些内容。
- echo 重复的不要
- echo.
- set /p wb1=请输入要处理的[路径]文本2:
- set /p wb2=请输入要处理的[路径]文本1:
- set /p wb3=请输入处理后生成的[路径]文本:
- findstr /livg:"%wb1%" "%wb2">"%wb3%
- echo 处理完成
- ping /n 2 127.0.1 >nul
- goto :eof
复制代码
作者: WHY 时间: 2018-11-22 19:28
- gawk "FNR==NR{a[$0]=1}; FNR<NR && !a[$0]{print}" 1.txt 2.txt > 3.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |