[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 求助批处理获取文本B内容,替换文本A中的内容

文本A内容如下:
654485244----feasd12----童童
654843485----as35e1f----乐乐
654115846----65awe5----亲亲
135857486----faseadf----宝宝
185647566----fwsa65----贝贝


文本B内容如下:
654485244----sldkwhjd
135857486----alxckedf
654843485----alckejffg

意思就是文本B的内容是文本A的内容修改过第二项的。
两个文本都很长,要怎么样才能把文本B的内容导入文本A,只修改第二项。求指教,叩谢!

  1. gawk 'BEGIN{OFS=FS="----"}FILENAME=="B.txt"{a[$1]=$2}FILENAME=="A.txt"{if(a[$1]) print $1,a[$1],$3;else print $0}' B.txt A.txt >result.txt
复制代码

TOP

回复 2# yhcfsr


    猜测楼主的意思,654115846在b文件里面没有出现,a文件第二列不变但是要保留。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

[更新]参考三楼建议

本帖最后由 yhcfsr 于 2018-12-19 15:00 编辑
  1. @echo off
  2. set "ATXT=a.txt"
  3. set "BTXT=b.txt"
  4. (for /f "tokens=1,2* delims=-" %%a in ('type "%ATXT%"') do (
  5.     set "flag="
  6.     for /f "tokens=2 delims=-" %%i in ('findstr /c:"%%a" "%BTXT%"') do (set "flag=1"&echo;%%a----%%i----%%c)
  7.     if not defined flag echo;%%a----%%b----%%c
  8. ))>结果.txt
复制代码
QQ 33892006

TOP

返回列表