使用perl脚本语言处理文本文件
前段时间,因为工作需要,使用perl脚本对一个txt文件做了一些处理。
需要处理的txt文件inputfile.txt结构是:
#col1 col2 col3 col4 col5
1_1 1_2 1_3 1_4 1_5
2_1 2_2 2_3 2_4 2_5
3_1 3_2 3_3 3_4 3_5
4_1 4_2 4_3 4_4 4_5
5_1 5_2 5_3 5_4 5_5
处理之后的txt文件outfile.txt结构是:
#col1 col2 col3 col4 col5
1_1,1_2,1_3,1_4,1_5
2_1,2_2,2_3,2_4,2_5
3_1,3_2,3_3,3_4,3_5
4_1,4_2,4_3,4_4,4_5
5_1,5_2,5_3,5_4,5_5
这个处理是非常简单的,很快就解决了问题。为了简单介绍一下perl脚本的使用方式,故借用这个例子,对其实现过程做以介绍,希望能起到抛砖引玉的作用。
脚本的实现代码如下所示,其中添加了不少注释以解释实现过程。
#$numArgs:numArgs前面加上“$”表示声明变量。
$numArgs = @ARGV; #获取传递参数的个数,注意,需要除去这两个:perl.exe和perl_do.pl
if(numArgs != 3)
{
print "Usage: perl.exe perl_do.pl inputfile.txt outfile.txt inputfile_cols";#输出信息的一种方式
exit(1);
}
$inputFile = $ARGV[0];#第一个参数:inputfile.txt
@inputFileArray;#定义了一个数组
$outputFile = $ARGV[1];#第二个参数:outfile.txt
$input_cols = $ARGV[2];#第三个参数:inputfile_cols
mainProcess();#主处理函数
exit(0); #退出整个程序
#该函数是打开文件inputfile.txt,将其中内容读取到数组inputFileArray中
sub getInputFile()
{
if(not open(INFILE, $inputFile))#打开文件inputfile.txt
{
print("Cann't open file $inputFile!/n");#输出信息的另一种方式
return 1;
}
@inputFileArray = <INFILE>;#将文件inputfile.txt中内容读取到数组inputFileArray中
return 0;
}
sub mainProcess()
{
my $input_line;#声明变量
my $input_size;
my $i;
my $batfile = "test.bat";
my $list = "";
if(getInputFile())
{
print "getInputFile fail!/n";
return 1;
}
if(not open(BATFILE, ">$batfile"))
{
print("cann't open file $batfile!/n");
return 1;
}
$isFirstLine = 1;
foreach $input_line(@inputFileArray)#循环处理文件inputfile.txt中的每一行数据
{
$config_linecount++;
$input_line = ~ s//t/ /;#获取非注释行数据
chomp($input_line);
while($input_file = ~ s/^ ){}
next if($input_file = ~ /^#/);
next if($input_file = ~ /^!/);
next if($input_file = ~ /^$/);
$_ = $input_line;
@input_list = m//w+/g;
$input_size = $input_list;
for($i = 0; $i < $input_cols; $i++)
{
if($i ne ($input_cols -1))#ne表示不等于
{
$list = $list.$input_list[$i].",";#.用来连接两个变量,$input_list[$i]表示第i个数据
}
else
{
$list = $list.$input_list[$i];
}
}
if(1 == $isFirstLine)
{
print BATFILE "echo $list 1>$outputFile/n";#>表示创建新文件并写入数据
$isFirstLine = 0;
}
else
{
print BATFILE "echo $list 1>>$outputFile/n";#>>表示追加数据
}
$list = "";
}
system("$batfile");#执行batfile
}
上述代码应该写入perl_do.pl。
建立一个bat文件,写入如下信息:
perl.exe perl_do.pl inputfile.txt outfile.txt 5
注意:执行该bat文件,必须得有perl.exe,perl56.dll和perl58.dll。
使用perl脚本语言处理文本文件相关推荐
- perl脚本语言学习
来公司的第二个星期便看了一下perl语言,发现掌握一门脚本语言还是非常有用的.到现在为止已经入职两个月,用perl脚本做了这些活: 1. 修改了公司的一个爬取网页源代码的脚本 2. 改进了一个出特征库 ...
- Perl脚本语言(一)
一.简介 1.全称:Practical Extraction and Report Language(实用报表提取语言) 2.特点:简单快速开发,使用最广泛的脚本语言. 3.报表:向上级报告的表格. ...
- Perl/CGI脚本语言编程学习资料及开发工具下载大全
Practical Extraction and Report Language Perl 最初的设计者为拉里·沃尔(Larry Wall),它于1987年12月18日发表.Perl借取了C.sed. ...
- 脚本语言语言脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua
今天一直在研究脚本语言语言之类的问题,上午正好有机会和大家共享一下. 脚本语言:Shell , JavaScript.VBScript.Perl.PHP.Python.Ruby.Lua 工作控制语言和 ...
- Perl,Python,Ruby,Javascript 四种脚本语言比较
Perl 为了选择一个合适的脚本语言学习,今天查了不少有关Perl,Python,Ruby,Javascript的东西,可是发现各大阵营的人都在吹捧自己喜欢的语言,不过最没有争议的应该是Javascr ...
- perl php python 速度,Perl,Php,python等各种脚本语言现状
Perl,Php,python等各种脚本语言现状 文章作者:网友投稿 发布时间:2008-09-01 13:38:51 来源:网络 曾经程序语言世界里的二等公民,脚本语言(也叫动态语言)正成为开发者的 ...
- 动态语言开发环境python_GitHub - lcyan26/Script.NET: 脚本语言集成开发环境,支持Tcl、Python、Perl、Ruby、Lua等脚本语言。...
Script.NET介绍 Script.NET是蓝蚂蚁工作室开发的一套集成开发环境(可用于Tcl.Python.Perl.Ruby.Lua等脚本语言开发),最新的4.0版本已经在github上开源. ...
- 会linux基本命令是脚本语言吗,如何理解Linux Shell和基本Shell脚本语言?
理解Linux Shell: shell:一个命令行解释器,通过执行命令或脚本,帮助用户与操作系统打交道. process:进程,用户执行的任务是进程,但进程不只是任务. file:文件放在硬盘上,包 ...
- 把C++当脚本语言写
把C++当脚本语言写! 提到脚本,脑海里马上闪过一大堆:Python,Perl,Ruby,PHP,JS,VBS,LUA... 不过你有没听说过,用经典的C++做脚本语言吗?先不多说,上个图.(先别纠结 ...
最新文章
- c语言多线程mysql_多线程读写mysql数据库
- oraclf 复杂查询练习_刷完这些烧脑的SQL练习题,复杂查询才能熟能生巧
- c primer plus--数据和C(第3章)--习题
- 3.8 Softmax 回归-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- CYQ.Data 轻量数据访问层(八) 自定义数据表实现绑定常用的数据控件(中)
- [转]粵語固有辭彙與漢語北方話辭彙對照
- 使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux
- 神奇的国度(HYSBZ-1006)
- mongodb占内存过大情况处理
- 创意网页排版设计和教程分享,打造 “视”不可挡的网页设计
- 自动化测试之—Hamcrest匹配器
- 载入java VM时windows出现错误:2 的解决方法
- RHEL 7 修改网卡的ip地址
- IP错误引起MongoDB副本集初始化失败
- 中国古代木制机器发展简史
- 怎么把画好的流程图插入到Word中?
- WIN10 家庭版 安装DOCKER 遇到问题:THIS COMPUTER DOESN'T HAVE VT-X/AMD-V ENABLED
- Linux运维技术之详解任务计划(crontab命令)
- 人工智能工程师的三个层次
- 驭势科技携手奇辉机器人,联合发布面向多行业的智慧物流整体解决方案