免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3647 | 回复: 5
打印 上一主题 下一主题

把1.txt文件的一部分读取出来,加到2.txt上,怎么写? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-09 19:41 |只看该作者 |倒序浏览
1.txt的内容:
1320238
1320239
1320239
1320238
1320238
1320238
1320235
1320237

txt.2的内容:
102 5709072117805887 4001 1301854
102 5709072117807510 4001 1320292
102 5709072117838653 4001 1301857
102 5709072117814280 4001 1305832
102 5709072117839397 4001 1310673
102 5709072117839335 4001 1311270

我想先把文件1的内容读取出来,然后读取文件二的内容,在读取文件2的内容的时候,文件2的最后一列需要包含在上文件1内。
我的代码是这样:

#/usr/bin/perl
use strict;
use warnings;
my @line;
my $column4;
my %hash;
open (TWO,"$ARGV[1]") || die $!;
while (<TWO>)
{
chomp;
@line=split;
$column4=$line[3];
$hash{$column4}=$_;
}
open (ONE,">>$ARGV[0]") || die $!;
while (<ONE>)
{
chomp;
print $hash{$_} if defined $hash{$_};
print "/n";
}

但是运行之后, 1.txt什么反应也没有。什么地方有错吗?

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
2 [报告]
发表于 2013-11-09 23:21 |只看该作者
你只是读取,并没有修改什么,所以,1.txt 没有变化是正常的

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
3 [报告]
发表于 2013-11-10 00:50 |只看该作者
就你给的那两个文件,你想得到什么结果?貌似没什么关联吧?

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
4 [报告]
发表于 2013-11-10 01:36 |只看该作者
想读取1.txt, 修改
  1. open (ONE,">>$ARGV[0]") || die $!;
复制代码
  1. open ( ONE, $ARGV[0] ) || die $!;
复制代码

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
5 [报告]
发表于 2013-11-10 15:04 |只看该作者
  1. open my $one, '1.txt' or die $!;
  2. open my $two, '2.txt' or die $!;
  3. my %keys;

  4. while (<$one>) {
  5.     chomp;
  6.     $keys{$_} = 1;
  7. }

  8. while (<$two>) {
  9.     my $key = (split)[-1];
  10.     print if $keys{$key};
  11. }
复制代码
回复 1# vicki_guo


   

论坛徽章:
0
6 [报告]
发表于 2013-11-10 20:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP