标题: [数值计算] 【已解决】批处理怎样查找两个文件的不同行? [打印本页]
作者: ads350668398 时间: 2015-11-8 02:07 标题: 【已解决】批处理怎样查找两个文件的不同行?
本帖最后由 ads350668398 于 2015-11-14 18:30 编辑
- @echo off
- for /f "delims=*" %%a in (22.txt) do (
- findstr /i "%%a" 11.txt || echo %%a>>3.txt
- )
-
- pause>nul
复制代码
**************************************
文件11
11 11
22 22
33 33
44 44
55 55
****************
文件22
11 11
12 35
33 33
88 4
44 44
55 55
****************
输出文件3
12 35
**************
哪个哥们帮忙 看看 哪里错了啊 谢谢
作者: ads350668398 时间: 2015-11-8 02:07
困了先睡一觉 明天 啊来
作者: 依山居 时间: 2015-11-8 04:03
要能理解你的意思也是够费劲的。
作者: B魔方大人 时间: 2015-11-8 04:28
你得明白for是干嘛的
在你代码里体现的意思是,分别读取22.txt内的每一行,然后到11.txt里查找。
这并不是匹配每一行相同与否。
作者: ads350668398 时间: 2015-11-8 08:16
不好意思 其实我是想 对比输出 不一样的行!
作者: ads350668398 时间: 2015-11-8 08:23
回复 3# 依山居
我是打算 对比两个文件11.txt和22.txt然后输出的是不相同的内容
作者: ads350668398 时间: 2015-11-8 08:31
本帖最后由 ads350668398 于 2015-11-8 08:35 编辑
回复 4# B魔方大人
解决 问题 如果有别的方法可以实现 比较输出不相同行的内容 告诉下 谢谢
另:问下 为什么输出了
12 35
而又不输出
88 4
呢
谢谢
作者: 依山居 时间: 2015-11-8 08:35
回复 6# ads350668398
你试试 fc
作者: ads350668398 时间: 2015-11-8 08:44
回复 8# 依山居
不知道 FC 晕
fc不会是方翠山是意思吧#24
作者: 尘丶 时间: 2015-11-8 09:22
本帖最后由 尘丶 于 2015-11-8 09:26 编辑
- @echo off&setlocal enabledelayedexpansion
- (for /l %%a in (1,1,50) do set /p n%%a=)<1.txt
- (for /l %%a in (1,1,50) do set /p m%%a=)<2.txt
- for /l %%a in (1,1,50) do if not !n%%a!==!m%%a! echo;!n%%a! !m%%a!
- pause
复制代码
fc是命令 fc /?
好像用findstr也可以,论坛有 我忘记怎么写的了
作者: 依山居 时间: 2015-11-8 10:31
- D:\temp>diff 11.txt 22.txt
- 2c2
- < 12 35
- ---
- > 22 22
- 4d3
- < 88 4
复制代码
作者: ads350668398 时间: 2015-11-8 10:51
感谢网友的热心 我扫后 尝试一下
作者: 依山居 时间: 2015-11-8 11:03
你当真是不能好好打字了。
作者: terse 时间: 2015-11-8 11:06
findstr /ixvg:22.txt 11.txt
作者: B魔方大人 时间: 2015-11-8 11:12
本帖最后由 B魔方大人 于 2015-11-8 11:25 编辑
回复 7# ads350668398
比较向同行内容:fc命令
举例:
fc 22.txt 11.txt
另外第二个问题,已经说的很清楚了。for读取22.txt每一行%%a,findstr搜索11.txt是否含有%%a。
而%%a,是包含空格的字符串,所以findstr会当作88or4处理。搜索88和4
详情需要自己查看findstr命令。
作者: 依山居 时间: 2015-11-8 11:13
- D:\temp>findstr /vg:22.txt 11.txt
- 12 35
- 88 4
复制代码
作者: ads350668398 时间: 2015-11-8 12:54
@echo off
for /f "delims=*" %%a in (11.txt) do (
findstr /i "%%a" 22.txt && echo %%a>>3.txt
)
::输出相同的行
pause>nul
输出结果:
11 11
33 33
44 44
55 55
作者: DAIC 时间: 2015-11-8 16:49
复制代码
作者: DAIC 时间: 2015-11-8 16:52
- gawk "NR==FNR{a[$0]=$0}NR>FNR{if(!($0 in a))print}" 1.txt 2.txt
复制代码
作者: ads350668398 时间: 2015-11-8 22:59
fc是命令 fc /?
好像用findstr也可以,论坛有 我忘记怎么写的了
尘丶 发表于 2015-11-8 09:22
输出结果:
22 22 12 35
44 44 88 4
55 55 44 44
55 55
作者: ads350668398 时间: 2015-11-8 23:02
回复 11# 依山居
没有看明白 输出结果是啥啊
作者: ads350668398 时间: 2015-11-8 23:11
好吧 可能真的没有说明白
输出目的:
12 35
88 4
谢谢
作者: terse 时间: 2015-11-9 11:13
本帖最后由 terse 于 2015-11-9 11:53 编辑
回复 22# ads350668398
好吧 试试这个
参数 多打一V 换为 x- findstr /ivxg:11.txt 22.txt
复制代码
作者: ads350668398 时间: 2015-11-9 11:37
本帖最后由 ads350668398 于 2015-11-9 12:22 编辑
回复 23# terse
成功了 谢谢 多打-V 就是输出相同的么?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |