标题: [文本处理] 对比两个文本的内容,把要对比的文本中的缺的,多的文本行列出来 [打印本页]
作者: kmustwxw 时间: 2015-1-8 12:01 标题: 对比两个文本的内容,把要对比的文本中的缺的,多的文本行列出来
问题描述:现有两个文本,文本1和文本2,文本1的内容是标准内容,用文本2的内容去和文本1对比,把文本2中的缺少的行和多余的行列出来放到文本“对比结果.txt”中。要说明的是,文本1的内容中,行有重复。可能会复杂点。
现举例说明如下:
文本1内容:
005001JA00001
005001JA00002
005001JA00002
005001JA00002
005001JA00003
005001JA00004
005001JA00006
005001JA00007
005001JA00008
005001JA00010
还有许多这种格式的行。
文本2的内容如下:
005001JA00001
005001JA00002
005001JA00002
005001JA00003
005001JA00004
005001JA00005
005001JA00006
005001JA00007
005001JA00008
005001JA00010
也还有好多这种格式的行,现在文本2中就缺少了:005001JA00002这一行,多了:005001JA00005这一行,把这两行的内容写到“对比结果.txt”中即可。不知道这样的要求,批处理代码能不能实现,先谢谢。
作者: DAIC 时间: 2015-1-8 13:14
- @echo off
- (for /f "tokens=2" %%i in ('diff.exe 1.txt 2.txt ^| findstr "^> ^<"') do (
- echo,%%i
- ))>3.txt
复制代码
diff.exe可以在UnxUtils工具包里面找到
http://bbs.bathome.net/thread-1114-1-2.html
作者: kmustwxw 时间: 2015-1-8 14:49
本帖最后由 kmustwxw 于 2015-1-8 15:06 编辑
回复 2# DAIC 看到这段代码不知道说什么了,这应该是个很难的问题,没有想到,我弄了半天没能解决掉,你就这几行就完美的解决了,工具包里的这些工具的各自的功能,怎么用,没有说明吗?谢谢,太感谢 了。
作者: DAIC 时间: 2015-1-8 15:50
回复 3# kmustwxw
那个工具包里面是常见Linux命令的Windows版本,如果熟悉Linux命令的话应该很容易上手。
如果要查看某个命令的帮助信息,可以这样:复制代码
作者: tmplinshi 时间: 2015-1-8 16:04
本帖最后由 tmplinshi 于 2015-1-8 16:06 编辑
可以用 WinMerge
发现 WinMerge 生成的“补丁”跟 diff.exe 的结果是一样的:
作者: kmustwxw 时间: 2015-1-26 13:16
回复 4# DAIC 你好,DAIC,我想把两个文本的相同内容输出来,应该如何修改,把大于和小于改成等号吗??
作者: DAIC 时间: 2015-1-26 13:48
把两个文本的相同内容输出来- @echo off
- findstr /x /g:1.txt 2.txt >3.txt
复制代码
作者: DAIC 时间: 2015-1-26 13:49
回复 6# kmustwxw
不是。diff命令的作用就是查找不同的行。查找相同的行用findstr命令就行了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |