加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

用perl实现两个文本文件交叉合并

发布时间:2020-12-15 23:41:01 所属栏目:大数据 来源:网络整理
导读:? perl语言被某些爱好者称作“ Unix 中的王牌工具 ”。确实,和C/C++相比,Perl语言特别是在处理 文本和文件方面,有一些独到的优势,在处理某些文本文件任务时,真的是很方便的。 ?? 比如下面这个问题: ? 现在 两个文本文件a.txt和b.txt,内容如下: a.txt:

? perl语言被某些爱好者称作“Unix 中的王牌工具”。确实,和C/C++相比,Perl语言特别是在处理文本和文件方面,有一些独到的优势,在处理某些文本文件任务时,真的是很方便的。

??比如下面这个问题:

? 现在两个文本文件a.txt和b.txt,内容如下:

a.txt:
a
b
c
d
e
f
g

b.txt:
1
2
3
4
5
6
7
? 我怎样能生成一个新文件(c.txt),内容如下:
c.txt:
a
1
b
2
c
3
d
4
e
5
f
6
g
7

? 简单说就是要完成两个文本文件的交叉合并。

? ? ??如果想用C/C++实现,实现应该是比较复杂的,需要使用不少字符串处理函数,以及文件指针操作,所以我个人认为还是比较复杂的。
? 如果想比较简单地解决这种问题,就需要找到一种“处理字符串和文本方面比较有优势”的语言,在这方面,被称为“软件芯片”的perl语言就属于其中之一,只需要知道它怎么控制文件句柄,就能个比较简单地实现了,不多说了,直接看实现代码:


#! /usr/bin/perl -w #本地的perl编译器路径
use strict; #开启语法检测
use 5.010; #使用5.10版本

my $name_1 = $ARGV[0];
my $name_2 = $ARGV[1]; #得到命令行参数

#open the ori perlterm script
open TXT_1,"<$name_1";
open TXT_2,"<$name_2"; #得到两个文件句柄

my @a = <TXT_1>;
my @b = <TXT_2>; #得到两个文件内容

my $line_b = @b; #b.txt文件内容传递
my $count_line = 0; #初始化文件行数

open my $newfile,">","c.txt"; #创建升成的新文件和句柄

foreach (@a){ #循环开始交叉合并
chomp;
print $newfile "$_n";
if ($count_line <= $line_b){
print $newfile "$b[$count_line]n";
$count_line+=1;
}
}

close $newfile or warn "can not close the file";#合并结束,关闭

? 保存为merge.pl并退出,这样就OK啦!运行结果如下:
a.txt:
a
b
c
d
e
f
g

b.txt:
1
2
3
4
5
6
7

c.txt:
a
1

b
2

c
3

d
4

e
5

f
6

g
7

? 不到30行,就搞定了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读