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

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

[复制链接]
发表于 2010-5-7 10:12:54 | 显示全部楼层 |阅读模式
本帖最后由 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 编辑 ]
发表于 2010-5-7 11:22:12 | 显示全部楼层
说明:
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
复制代码
 楼主| 发表于 2010-5-7 11:50:01 | 显示全部楼层
测试结果:
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的前面了........
发表于 2010-5-7 12:12:36 | 显示全部楼层
看我在2楼说明里的第三条!
发表于 2010-5-7 21:31:29 | 显示全部楼层
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 07:51 , Processed in 0.029427 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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