找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31529|回复: 11

[文本处理] [已解决]求指导 批处理实现两文本对比问题

[复制链接]
发表于 2015-3-16 00:05:10 | 显示全部楼层 |阅读模式
本帖最后由 pyhouse 于 2015-3-16 23:22 编辑

两TXT 文件
A 文件内容:   
aaaaaaaa
bbbbbbbb
cccccccccc

B文件内容:
bbbbbbbb
cccccccccc
dddddddd
eeeeeeee

想把B中内容补充到A中,想到的方法是提取 A中最后一行,在B中定位,再将定位后面的行提取出来,再echo >>进A里,但不知道如何编写,请高手指点,感谢!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-3-16 01:39:45 | 显示全部楼层
本帖最后由 CrLf 于 2015-3-16 01:41 编辑

试试
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do set "n=%%a"
  3. for /f "delims=[]" %%a in ('find /n ^"%%n:"=""%%"^<b.txt') do more +%%a b.txt >>a.txt
复制代码
发表于 2015-3-16 01:40:11 | 显示全部楼层
回复 1# pyhouse
以你的思路编的代码
  1. @echo off
  2. for /f "delims=" %%a in ('type "a.txt"') do set "laststr=%%a"
  3. for /f "tokens=1* delims=:" %%b in ('findstr /r /n /c:"%laststr%" "b.txt"') do set "n=%%b"
  4. echo.>>"a.txt"
  5. >>"a.txt" more +%n% "b.txt"
  6. pause
复制代码
发表于 2015-3-16 01:43:25 | 显示全部楼层
回复 3# pcl_test


    这里用 find 稳妥一些,还有,最好考虑到 %laststr% 中含有特殊字符的情况
发表于 2015-3-16 01:45:09 | 显示全部楼层
回复 4# CrLf
感谢指正
发表于 2015-3-16 09:14:31 | 显示全部楼层
这个问题怎么用gawk和sed来解决呢?
发表于 2015-3-16 11:15:38 | 显示全部楼层
回复 6# 愤怒的CMD
  1. gawk "NR==FNR{a[$0]=$0;print}NR>FNR{if(!($0 in a))print}" a.txt b.txt > c.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
愤怒的CMD + 1 谢谢帮助

查看全部评分

发表于 2015-3-16 11:52:38 | 显示全部楼层
回复  愤怒的CMD
DAIC 发表于 2015-3-16 11:15


请问一下,如果B文件中匹配行下面的行中还有与A文件中相同的,但是又想一起输出怎么写呢?
即B文件为
  1. bbbbbbbb
  2. cccccccccc
  3. dddddddd
  4. eeeeeeee
  5. aaaaaaaa
  6. bbbbbbbb
复制代码
想要输出
  1. aaaaaaaa
  2. bbbbbbbb
  3. cccccccccc
  4. dddddddd
  5. eeeeeeee
  6. aaaaaaaa
  7. bbbbbbbb
复制代码
发表于 2015-3-16 14:40:29 | 显示全部楼层
回复 8# 愤怒的CMD

使用diff:
  1. awk "{print}" A>C && diff -u C B|sed -n "4,$s/^+//p" >>C
复制代码
C即为想要的结果文件。

评分

参与人数 2技术 +2 收起 理由
CrLf + 1 diff
愤怒的CMD + 1 感谢帮助

查看全部评分

发表于 2015-3-16 15:12:48 | 显示全部楼层
回复 9# tigerpower

谢谢帮助。只能用这个辗转的方法吗?
发表于 2015-3-16 18:46:06 | 显示全部楼层
回复 1# pyhouse
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
发表于 2015-3-16 19:04:44 | 显示全部楼层
借鉴坛友的纯 sed 方案:
  1. @sed -n "$=" a.txt|sed "s/.+/1,&d/"|sed -f - b.txt>>a.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 18:15 , Processed in 0.025215 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表