Board logo

标题: [文本处理] 批处理怎么将两个txt文本一行一行对应替换内容? [打印本页]

作者: wuly520    时间: 2010-5-7 10:12     标题: 批处理怎么将两个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 编辑 ]
作者: hanyeguxing    时间: 2010-5-7 11:22

说明:
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
复制代码

作者: wuly520    时间: 2010-5-7 11:50

测试结果:
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的前面了........
作者: hanyeguxing    时间: 2010-5-7 12:12

看我在2楼说明里的第三条!
作者: CUer    时间: 2010-5-7 21:31

  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
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2