标题: [文本处理] [已解决]求指导 批处理实现两文本对比问题 [打印本页]
作者: pyhouse 时间: 2015-3-16 00:05 标题: [已解决]求指导 批处理实现两文本对比问题
本帖最后由 pyhouse 于 2015-3-16 23:22 编辑
两TXT 文件
A 文件内容:
aaaaaaaa
bbbbbbbb
cccccccccc
B文件内容:
bbbbbbbb
cccccccccc
dddddddd
eeeeeeee
想把B中内容补充到A中,想到的方法是提取 A中最后一行,在B中定位,再将定位后面的行提取出来,再echo >>进A里,但不知道如何编写,请高手指点,感谢!
作者: CrLf 时间: 2015-3-16 01:39
本帖最后由 CrLf 于 2015-3-16 01:41 编辑
试试- @echo off
- for /f "delims=" %%a in (a.txt) do set "n=%%a"
- for /f "delims=[]" %%a in ('find /n ^"%%n:"=""%%"^<b.txt') do more +%%a b.txt >>a.txt
复制代码
作者: pcl_test 时间: 2015-3-16 01:40
回复 1# pyhouse
以你的思路编的代码- @echo off
- for /f "delims=" %%a in ('type "a.txt"') do set "laststr=%%a"
- for /f "tokens=1* delims=:" %%b in ('findstr /r /n /c:"%laststr%" "b.txt"') do set "n=%%b"
- echo.>>"a.txt"
- >>"a.txt" more +%n% "b.txt"
- pause
复制代码
作者: CrLf 时间: 2015-3-16 01:43
回复 3# pcl_test
这里用 find 稳妥一些,还有,最好考虑到 %laststr% 中含有特殊字符的情况
作者: pcl_test 时间: 2015-3-16 01:45
回复 4# CrLf
感谢指正
作者: 愤怒的CMD 时间: 2015-3-16 09:14
这个问题怎么用gawk和sed来解决呢?
作者: DAIC 时间: 2015-3-16 11:15
回复 6# 愤怒的CMD - gawk "NR==FNR{a[$0]=$0;print}NR>FNR{if(!($0 in a))print}" a.txt b.txt > c.txt
复制代码
作者: 愤怒的CMD 时间: 2015-3-16 11:52
回复 愤怒的CMD
DAIC 发表于 2015-3-16 11:15
请问一下,如果B文件中匹配行下面的行中还有与A文件中相同的,但是又想一起输出怎么写呢?
即B文件为- bbbbbbbb
- cccccccccc
- dddddddd
- eeeeeeee
- aaaaaaaa
- bbbbbbbb
复制代码
想要输出- aaaaaaaa
- bbbbbbbb
- cccccccccc
- dddddddd
- eeeeeeee
- aaaaaaaa
- bbbbbbbb
复制代码
作者: tigerpower 时间: 2015-3-16 14:40
回复 8# 愤怒的CMD
使用diff:- awk "{print}" A>C && diff -u C B|sed -n "4,$s/^+//p" >>C
复制代码
C即为想要的结果文件。
作者: 愤怒的CMD 时间: 2015-3-16 15:12
回复 9# tigerpower
谢谢帮助。只能用这个辗转的方法吗?
作者: pcl_test 时间: 2015-3-16 18:46
回复 1# pyhouse
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: CrLf 时间: 2015-3-16 19:04
借鉴坛友的纯 sed 方案:- @sed -n "$=" a.txt|sed "s/.+/1,&d/"|sed -f - b.txt>>a.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |