永发信息网

老师, 请教下,用perl 语言,把一个文件里面的一部分内容写到另一个文件里的方法。谢谢!

答案:2  悬赏:40  手机版
解决时间 2021-03-19 00:23
源文内容格式如下:
中文12345678 中文11111111 中文字符1
中文23456781 中文11111111 中文字符1
.......
中文12345678 中文22222222 中文11111111 中文字符2
中文23456781 中文22222222 中文11111111 中文字符2
目标文件内容如下(替换后的)
中文11111111 中文字符1
中文22222222 中文字符2
最佳答案
根据我的理解,做了一个脚本,在我的机器上试过了:
use 5.016;
use warnings;
use utf8;
use autodie;

my %target;
my $source_file = 'original.txt';
my $target_file = 'target.txt';
my $source_file_fh; # your source file handle
my $target_file_fh; # your target file handle
my $key;     # key item in target file
my $content;     # last content item in target file

sub get_last_item {
my $str = shift;

$str =~ /.*[ ]+(.*)/;
return $1;
}

sub get_key {
my $str = shift;
my $content = shift;

$str =~ /.*[ ]+(.*)[ ]+$content/;
return $1;
}

open($source_file_fh, "<", $source_file);
open($target_file_fh , ">", $target_file);
while (<$source_file_fh>) {
$content = get_last_item($_);
$key = get_key($_, $content);
$target{$key} = $content if ($key);
}
for (sort keys %target) {
say $target_file_fh "$_ $target{$_}";
}
close $target_file_fh;
close $source_file_fh;
全部回答
不知道什么原因,今天我发的回答都显示不出来,只能用匿名发送试试看。(jasonqwu) 做了一个脚本,在我的机器上试过了: use 5.016; use warnings; use utf8; my %target; my $source_file = 'original.txt'; my $target_file = 'target.txt'; my $source_file_fh; # your source file handle my $target_file_fh; # your target file handle my $key; # key item in target file my $content; # last content item in target file open($source_file_fh, ":utf8", $target_file) or die "can't open $target_file : $!\n"; while (<$source_file_fh>) { $content = get_last_item($_); $key = get_key($_, $content); $target{$key} = $content if ($key); } for (sort keys %target) { say $target_file_fh "$_ $target{$_}"; } close $target_file_fh; close $source_file_fh; sub get_last_item { my $str = shift; $str =~ /.*[ ]+(.*)/; return $1; } sub get_key { my $str = shift; my $content = shift; $str =~ /.*[ ]+(.*)[ ]+$content/; return $1; }按照新的要求,修改了代码,请确认。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
沈派西域老回民我想知道这个在什么地方
不知道报哪些志愿,看看近十年高考的状元们都
姓胡的男孩名字
用什么方法能感化一个叛逆期孩子的心
竹香新村怎么去啊,有知道地址的么
我现在在厦门机场; 我想做动车回晋江内坑站
姓李名果儿这个名字好吗?
金田一剧场版中,第二次和第三次的歌剧院事件
护理学校毕业,。但是现在不想干护士了,太辛
前几天看王牌对王牌,李若彤和朱茵感觉真的是
求云画的月光第12集百度云
小学日记秋天的早晨100字
银行卡密码输错三次了能在异地银行服务厅办理
女友叫依恋,寻一对应的网名
我家孩子被几个14-16周岁的孩子拦截抢钱因没
推荐资讯
哪位上仙有 《叼爆红唇系列 》的种子,求!!
请问“大家好”用文言文怎么说?
在PS中可以复制综合选项里的样式吗
为什么LOL在游戏里打的字都是方格,显示不了
凉拌菜焯水后过凉水的问题!
vivox20用电快
过期牛奶能做手工皂
馨宝贝母婴用品生活馆我想知道这个在什么地方
洋葱鳞片叶表皮属于的组织类型是(  )
做一个展架多少钱
学生账号解锁收不到微软的验证邮件!!!!大
南京室内设计培训学校有哪些
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?