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

[文本处理] 批处理怎么将两个txt文本一行一行对应替换内容?

本帖最后由 pcl_test 于 2016-7-14 21:11 编辑

比如:1.txt和2.txt
1.txt的内容
X=123&Y=456&S=34
X=qqq&Y=bbb&S=34
X=aaaa&Y=cccc&S=34
X=bbb&Y=aaa&S=34
2.txt内容
321 123
www rrrr
kkk lll
ooo ggg
现在的问题就是
我想把2.txt 的内容一行对应一行的替换X和Y后面的值
替换之后的样本
X=321&Y=123&S=34
X=www&Y=rrrr&S=34
X=kkk&Y=lll&S=34
X=ooo&Y=ggg&S=34
请问代码应该怎么写.谢谢

[ 本帖最后由 wuly520 于 2010-5-7 10:15 编辑 ]

说明:
1,1、2两个文本必须互相对应行
2,1.txt文本必须符合样式:X=字符串&Y=字符串&S=字符串
3,在下面批处理中的"tokens=1,2,3 delims=:         ",delims=后依次为英文冒号、制表符和空格
  1. @echo off&setlocal enabledelayedexpansion
  2. for /F "tokens=1,2,3 delims=:         " %%i in ('findstr /n .* 2.txt') do set #%%i=%%j&set @%%i=%%k
  3. (for /F "tokens=1,3* delims=&:" %%i in ('findstr /n .* 1.txt') do echo.X=!#%%i!^&Y=!@%%i!^&%%k)>结果.txt
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

测试结果:
X=321 123&Y=&S=34
X=www rrrr&Y=&S=34
X=kkk lll&Y=&S=43
X=ooo ggg&Y=&S=34
Y的值.跑去Y的前面了........

TOP

看我在2楼说明里的第三条!
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

  1. gawk -F"[ =&]" "NR==FNR{a[FNR]=$1;b[FNR]=$2}NR>FNR{print $1\"=\"a[FNR]\"\x26\"$3\"=\"b[FNR]\"\x26\"$5\"=\"$6}" 2.txt 1.txt >3.txt
复制代码

TOP

返回列表