请教一个文本处理的批处理或者VBS程序
假设a.txt的内容为:0#0;1#1;2#2;3#3;...(每行都是这种格式,用#分成前后两部分内容)b.txt的内容为:2#a;3#b;4#c;...a的每一行和b...
假设a.txt的内容为:
0#0;
1#1;
2#2;
3#3;
...(每行都是这种格式,用#分成前后两部分内容)
b.txt的内容为:
2#a;
3#b;
4#c;
...
a的每一行和b对比,规则为:只比对#前面相同的部分,如果b中不存在,则输出到c.txt
即输出内容为:
0#0;
1#1;
4#4;
可以用批处理命令或者VBS命令 展开
0#0;
1#1;
2#2;
3#3;
...(每行都是这种格式,用#分成前后两部分内容)
b.txt的内容为:
2#a;
3#b;
4#c;
...
a的每一行和b对比,规则为:只比对#前面相同的部分,如果b中不存在,则输出到c.txt
即输出内容为:
0#0;
1#1;
4#4;
可以用批处理命令或者VBS命令 展开
展开全部
Set fso=CreateObject("Scripting.FileSystemObject")
set f1=fso.opentextfile("a.txt",1)
b=""
do while f1.atendofstream<>true
n1=f1.readline
if n1<>"" then
n=n1
n1=mid(n1,1,instr(n1,"#")-1)
set f2=fso.opentextfile("b.txt",1)
a=0
do while f2.atendofstream<>true
n2=f2.readline
if n2<>"" then
n2=mid(n2,1,instr(n2,"#")-1)
if n1=n2 then
a=1
exit do
end if
end if
loop
f2.close
if a=0 then
b=b & n & vbcrlf
end if
end if
loop
f1.close
set f=fso.opentextfile("c.txt",2,true)
f.writeline b
f.close
msgbox "OK"
说明:1、行中、行末可以含有空行,
2、不为空行的行必须含有"#"
set f1=fso.opentextfile("a.txt",1)
b=""
do while f1.atendofstream<>true
n1=f1.readline
if n1<>"" then
n=n1
n1=mid(n1,1,instr(n1,"#")-1)
set f2=fso.opentextfile("b.txt",1)
a=0
do while f2.atendofstream<>true
n2=f2.readline
if n2<>"" then
n2=mid(n2,1,instr(n2,"#")-1)
if n1=n2 then
a=1
exit do
end if
end if
loop
f2.close
if a=0 then
b=b & n & vbcrlf
end if
end if
loop
f1.close
set f=fso.opentextfile("c.txt",2,true)
f.writeline b
f.close
msgbox "OK"
说明:1、行中、行末可以含有空行,
2、不为空行的行必须含有"#"
展开全部
a的每一行和b对比,规则为:只比对#前面相同的部分,如果b中不存在,则输出到c.txt
@echo off
(for /f "tokens=1* delims=#" %%i in (a.txt) do findstr /b "%%i#" b.txt>nul||echo %%i#%%j)>c.txt
输出内容为:
0#0;
1#1;
4#4;
好像还要比较b有a没有的部分,如下
@echo off
(for /f "tokens=1* delims=#" %%i in (a.txt) do findstr /b "%%i#" b.txt>nul||echo %%i#%%j)>c.txt
(for /f "tokens=1* delims=#" %%i in (b.txt) do findstr /b "%%i#" a.txt>nul||echo %%i#%%j)>>c.txt
@echo off
(for /f "tokens=1* delims=#" %%i in (a.txt) do findstr /b "%%i#" b.txt>nul||echo %%i#%%j)>c.txt
输出内容为:
0#0;
1#1;
4#4;
好像还要比较b有a没有的部分,如下
@echo off
(for /f "tokens=1* delims=#" %%i in (a.txt) do findstr /b "%%i#" b.txt>nul||echo %%i#%%j)>c.txt
(for /f "tokens=1* delims=#" %%i in (b.txt) do findstr /b "%%i#" a.txt>nul||echo %%i#%%j)>>c.txt
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#!perl -w
use strict;
# AUTHOR: niejieqiang
my %hash;
my @array;
open my $file_b, "<", "b.txt";
while (<$file_b>) {
@array=split/\#/;
$hash{$array[0]} = 1;
}
close $file_b;
my @temp;
open my $file_a, "<", "a.txt";
while (<$file_a>) {
@temp=split/\#/;
print if not exists $hash{$temp[0]};
}
close $file_a;
use strict;
# AUTHOR: niejieqiang
my %hash;
my @array;
open my $file_b, "<", "b.txt";
while (<$file_b>) {
@array=split/\#/;
$hash{$array[0]} = 1;
}
close $file_b;
my @temp;
open my $file_a, "<", "a.txt";
while (<$file_a>) {
@temp=split/\#/;
print if not exists $hash{$temp[0]};
}
close $file_a;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询