问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

perl 文件间的匹配替换

发布网友 发布时间:2022-05-06 08:56

我来回答

4个回答

热心网友 时间:2022-06-29 04:58

my $inputF = @ARGV[0];
my $inputS = @ARGV[1];
my $output = @ARGV[2];
open INPUTF , $inputF or die "cannot open the file:$inputS$!\n";
open INPUTS, $inputS or die "cannot open the file:$inputS$!\n";
open OUTPUT, ">$output" or die "cannot open the file:$inputS$!\n";
our @listN=();
our %listL=();
my @line;
while(<INPUTF>)
{
chomp;
next unless $_;
@listN = split /;/,$_; #将text1.txt 用“;”分割,放入数组@listN中
foreach my $n(@listN) #每行的内容都放入另一个数组@line里面保存
{ #(直至最后全部存在@line中)
push (@line, $n);
}
}
#print "@line\n"; #调试
while(<INPUTS>)
{
chomp;
next unless $_;
my @map = split /\s+/,$_; #将text2.txt 用空格分割放入数组@map中
$listL{$map[0]}=$map[1] unless exists $listL{$map[0]};#并将$map[0]作为key值存在哈希
}
foreach my $list(@line) #把text1.txt中的全部拿出来找相关的mapping对象
{
if (exists $listL{$list}) #如果找到了 证明有mapping object
{
print OUTPUT "number: $list, mapping: $listL{$list}\n"; #输出到text3.txt中(自命名)
}
}
#perl F:\perltest\mapping.pl F:\perltest\text1.txt F:\perltest\text2.txt F:\perltest\text3.txt追问谢谢你写的这么详细,请问
my @map=split/\s+/,$_; #将text2.txt用空格分隔放入数组——>变成用“tab”分隔怎么写?

追答my @map=split/\t/,$_; # \t 表示 tab

热心网友 时间:2022-06-29 04:58

你想要的是一个 FULL JOIN,而不是简单的“查找替换”

FULL JOIN 用笛卡尔积来求。
建立两个 LIST 分别对应两个表,

foreach $a in (@a) {
foreach $b in (@b) {
# ... <A>
}
}

在 <A> 处,判断 $i 和 $j 的键是否相同,如果相同,则进行 JOIN 操作:
$ak = $a->[0];
$bk = $b->[0];
if ($ak eq $bk) {
# JOIN:
my @av = (@a);
my @bv = (@b);
shift @bv;
my @c = (@av, @bv);
print join(', ', @c) . "\n";
}

热心网友 时间:2022-06-29 04:59

s/需替换字符/替换字符/g
g表示全局替换

热心网友 时间:2022-06-29 04:59

$txt1=<<TXT;
1432;3551;51135;5518;5519;5520;5522;55844;5970
1432;3551;51701;5608;9020;9064
1432;3551;5595;5601;5602;5608
1432;3551;5595;5601;5602;5970;8767
1432;3551;5608;7186;9020;9064
1432;3659;5610;5970;9451
1432;3659;5610;673;9451
1432;3725;5595;5601;5602
TXT
$txt2=<<TX;
1432 adec
2778 lkhj
2799 snjkl
2811 sdf
2821 pop
2885 myc
2977 myb
3033 cde
TX
%mima = map {split/\s+/,$_} split/\n/,$txt2;
@txt1 = split/\n/,$txt1;
open DDD,">d:/text3.txt";
$i = 0;
while($i<=$#txt1){
@txt =split/\;/,$txt1[$i];
@va = map{$mima{$_}?$mima{$_}:$_} @txt;
$va=join ';',@va;
print"$va\n";
print DDD "$va\n";
$i++;
}
close DDD;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
粒上皇开口熟栗120g*5袋(共600g)-详细介绍 三皇王板栗介绍 品牌榜:2024年板栗十大品牌排行榜 投票结果公布【新】 为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 perl全局匹配替换 重庆什么行业挣钱,投资又小,又轻松,又暴利?! 李俊辰的出版书籍 大凡金地名都周边环境怎么样?生活便利吗? 一天吃三个香蕉一个苹果两个香瓜两个西红柿一瓶纯牛奶喝两碗粥,酸豆角配粥一起喝。会不会变胖? 长豆角不能和什么食物一起吃 双手合拢 手指交叉 你在最上面的大姆指是左手的还是右手的?这又这代表什么呢? 手掌向上,食指和拇指相抵,这是什么手印? 很多爱豆像这样大拇指和食指交叉的手势是什么意思? oppoa73和vivoy83那个好 bigbang 经常做的手势是什么意思,拇指和食指交叉 拇指放在食指上就是我想跟你说的话.什么意思? 为啥食指大拇指&#xF44D;&#xF3FB;交叉一夹就是“爱你”的意思啊? 心居剧中施源母亲拇指和食指相互交叉的动作是什么意思 oppo手机与vivo手机哪个更好? VIP们,告诉我一下,大拇指和食指交叉什么意思 大拇指和食指交叉的手势什么意思 制作黄金叶凉粉用什么碱? 乡下树上摘的可以做凉粉的是什么 如何制作立体贺卡? perl语言编程中的正则表达式模式匹配和替换操作 php 用 Perl(Preg) 正则表达式匹配和替换 问题 不是Ereg Perl正则表达式替换 perl中的正则表达式字符串的匹配以下要求 perl处理文本,用正则表达式的匹配问题. 全站仪数据采集功能有什么作用 perl中匹配并修改字符 perl中正则如何替换html代码中标签 什么是全站仪的数据采集 perl语言,用正则表达式将一个文本中所有&lt;&gt;之间的字符串替换成1 全站仪数据采集功能可以用来转测站点吗? 这个perl正则表达式如何匹配?!~ perl 正则表达式 匹配多行的问题 perl,正则表达式修改文件 全站仪数据采集什么意思 使用perl 匹配文件关键字后 进行批量修改文件名字。 关于perl匹配 perl的数据提取与匹配 perl关于匹配的问题 全站仪坐标放样与数据采集