我已经搜索了解决方案,但我仍然有问题。我有两个文件:
File1.txt
1111
2222
3333
File2.txt
1111
2222
3333
4444
我想要一个只有区别的输出文件:
File3.txt
4444
我尝试使用 Findstr,但由于字符串太大,它不起作用。我也尝试过使用 gerp,但我无法正常工作。
这是我的批处理代码(由于字符串太长,它不起作用):
findstr /vxg:vanilla_localisation.tsv mod_localisation.tsv > raf_changes.tsv
for /f %%a in ('^<raf_changes.tsv find /v /c ""') do echo %%a differences found
我也尝试过使用以下代码:
grep -f vanilla_localisation.tsv mod_localisation.tsv > raf_changes.tsv
但它只创建空文件。我是窗口用户。希望你能帮我找到解决方案。
干杯
这应该有效:
findstr /v /g:file1.txt file2.txt >result.txt
我认为这适用于 800 个字符 - 对于 20000 行来说不会很快。
@echo off
for /f "delims=" %%a in (file2.txt) do (
find "%%a" <"file1.txt" || >>result.txt echo %%a
)
这是一个选项,PowerShell 有一个差异实用程序;
@echo off
powershell "diff (Get-Content File1.txt) (Get-Content File2.txt) | foreach {$_.InputObject}" >result.txt
你可以在 Linux 中使用diff
diff file1.txt file2.txt
3a4
> 4444
使用grep
grep -vf file1.txt file2.txt
4444
使用awk
awk 'NR==FNR {a[$0]=1;next} !a[$0]' file1.txt file2.txt
4444
使用通信实用程序 (http://linux.101hacks.com/unix/comm-command-examples/):
comm -3 file1.txt file2.txt > file3.txt