标题: [文本处理] 批处理怎样以文本前两列数据为准找出其他文件中前两列相同的行数据? [打印本页]
作者: newbat123 时间: 2016-12-26 11:30 标题: 批处理怎样以文本前两列数据为准找出其他文件中前两列相同的行数据?
根据一个文本的前两列数据 找到另一个文本前两列匹配的行数据 以文件a的数据找到文件b内前两行匹配的行数据 (b文件内列数不定)
作者: flyinnet9 时间: 2016-12-26 12:01
本帖最后由 flyinnet9 于 2016-12-26 12:04 编辑
for /f "tokens=1-2" %%a in (a.txt) do set #%%a%%b=1
for /f "tokens=1-2*" %%a in (b.txt) do if defined #%%a%%b echo.%%a %%b %%c
作者: newbat123 时间: 2016-12-26 17:52
回复 2# flyinnet9
可以麻烦写详细一旦是哪个部分进行更改
作者: GNU 时间: 2016-12-26 20:40
回复 3# newbat123
2楼的意思是这样:- @echo off
- for /f "tokens=1-2" %%a in (a.txt) do set #%%a%%b=1
- (for /f "tokens=1-2*" %%a in (b.txt) do (
- if defined #%%a%%b echo.%%a %%b %%c
- ))>result.log
复制代码
作者: Nsqs 时间: 2016-12-27 08:04
本帖最后由 Nsqs 于 2016-12-27 09:00 编辑
- dim read(1),sc(1),m(1,1)
- set fso=CreateObject("Scripting.FileSystemObject")
- set regexp=new regexp
- file=array("a.txt","b.txt")
- with regexp
- .Global=-1:.IgnoreCase=-1
- .Pattern="(\d).*(\d).*(\d).*(\d)"
- for list=0 to ubound(file)
- read(list)=.Replace(fso.opentextfile(file(list)).readall,"$1$2$3$4") '格式化文本剔除其他字符包括空格和特殊字符在内
- sc(list)=split(read(list),vbcrlf)
- next
- .Pattern="((\d{2})\d{2})"
- for list1=0 to ubound(sc(0))
- m(0,0)=.replace(trim(sc(0)(list1)),"$2")
- m(0,1)=.Replace(sc(0)(list1),"$1")
- for list2=ubound(sc(1)) to 0 step -1
- if not .test(sc(0)(list1)) then exit for '文本行数不一或条件不符则忽略本次比较
- m(1,0)=.replace(trim(sc(1)(list2)),"$2")
- m(1,1)=.Replace(sc(1)(list2),"$1")
- if m(0,0)=m(1,0) then result=result&trim(m(1,1))&vbcrlf '满足条件提取b.txt数据
- next
- next
- .Pattern="(\d)(\d)(\d)(\d)":result=.Replace(result,"$1 $2 $3 $4")
- .Pattern="^(.*)\n$":if .test(result) then result=.Replace(result,"$1") '恢复空格间距
- end with
- fso.createtextfile("new.txt").write result
- set fso=nothing:set regexp=nothing
复制代码
来个vbs版
作者: newbat123 时间: 2017-2-15 13:35
回复 4# GNU 不好意思 我想请问一下 就是 第一列是1/1/2015 第二列是12:58:11 这样的格式 是不是需要改一下呀
作者: taofan712 时间: 2017-2-15 15:38
- @echo off
- for /f "tokens=1,2 delims= " %%a in (a.txt) do (
- findstr "^[%%a].[%%b]" bb.txt
- )
- pause
复制代码
作者: newbat123 时间: 2017-2-22 10:49
回复 7# taofan712
不好意思 我试了一下 不可以呢
作者: newbat123 时间: 2017-2-22 11:04
回复 2# flyinnet9
不好意思 我想请问一下 就是 第一列是1/1/2015 第二列是12:58:11 这样的格式 是不是需要改一下呀
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |