我正在运行一个程序,通过使用批处理比较两个文本文件来删除重复的行。
这是我个人使用的方法,通过从两个文本文件中删除重复的行来使我的工作更快。
我正在使用以下代码,
copy textfile1.txt output.txt >nul
findstr /lvxig:textfile1.txt textfile2.txt >>output.txt
textfile1.txt
包含
apple
orange
mango
textfile2.txt
包含
apple
mango
grapes
我希望output.txt
中的输出是
orange
grapes
但是输出进入output.txt
是
apple
orange
mango
grapes
我不想合并两个文本文件。我想通过比较这两个文本文件来删除类似的重复项。
答案 0 :(得分:1)
这种方法呢?
findstr /LVXIG:"textfile2.txt" "textfile1.txt" > "output.txt"
findstr /LVXIG:"textfile1.txt" "textfile2.txt" >>"output.txt"
或与普通redirection:
(
findstr /LVXIG:"textfile2.txt" "textfile1.txt"
findstr /LVXIG:"textfile1.txt" "textfile2.txt"
) > "output.txt"
使用示例数据,第一个findstr
命令行返回:
orange
第二个输出:
grapes
答案 1 :(得分:0)
如何创建哈希并计算出现次数?然后,仅使用出现一(1)次的事件。这样可以避免两次读取两个文件。
=== undupe.ps1
$hash = @{}
Get-Content 'testfile1.txt', 'testfile2.txt' | ForEach-Object { $hash[$_]++ }
foreach ($key in $hash.Keys) { if ($hash[$key] -eq 1) { Write-Output $key } }
从cmd shell或.bat文件脚本运行它。
powershell -NoLogo -NoProfile -File "undupe.ps1" >output.txt
答案 2 :(得分:0)
尝试一下:
cat textfile1.txt textfile2.txt | grep -Fvxf <(comm -12 <(sort -u textfile1.txt) <(sort -u textfile2.txt))
此代码的说明:
猫:从文件中读取数据
comm -12 <(sort -u textfile1.txt)<(sort -u textfile2.txt):仅显示两个文件中的重复行
grep -Fvxf:删除由通讯12引起的重复行
所以:
textfile1.txt:
apple
orange
mango
textfile2.txt:
apple
mango
grapes
退出:
orange
grapes
提出问题的用户想要它。