Chinaunix首页 | 论坛 | 博客
  • 博客访问: 457686
  • 博文数量: 118
  • 博客积分: 4015
  • 博客等级: 上校
  • 技术积分: 1233
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-24 22:11
文章分类

全部博文(118)

文章存档

2013年(5)

2011年(61)

2010年(52)

分类: Python/Ruby

2011-03-29 11:43:17

今天要处理一个文件,这个文件有许多行,处理起来不如一行来得爽,所以,就想写个脚本
来将文件整成一行,然后处理,这其实很简单,就是一行行的读文件,然后只送一个'\n'
就好了,下面是源代码
#!/usr/bin/perl
my $in = $ARGV[0];
die "Usage: lines2one.pl \n" if(@ARGV < 1);
open RH, $in or die "ERROR: $!";
my @lines = ; chomp @lines;
close RH or die "ERROR: $!";
for(my $i = 0; $i < @lines; $i ++){
    print $lines[$i]," ";
}
print "\n";
下面是截图
多行文件 bar.pl

调用处理的命令演示

处理的结果 aa

阅读(1933) | 评论(7) | 转发(0) |
给主人留下些什么吧!~~

neobilly2011-04-13 14:05:43

brantc:
我又改了下,这样应该就可以满足你的要求了吧:
perl -pe "chomp; print ' ' if $. != 1 " 1.txt
输出就是:
aa bb cc dd
每一行最后加了个空.....
perl -ne 'chomp;print ;' 1.txt 就可以了

brantc2011-04-13 13:30:40

neobilly: 有个问题,chomp 去掉了换行,但是中间的分隔还是要有的,比如我加个空格
这么写是不行的,所以
perl -pe "chomp" a.txt > b.txt就没法控制了,
所.....

我又改了下,这样应该就可以满足你的要求了吧:
perl -pe "chomp; print ' ' if $. != 1 " 1.txt
输出就是:
aa bb cc dd
每一行最后加了个空格

neobilly2011-04-13 12:51:54

brantc: 呃。。。
我估计可能你没有写对,应该是-pe,你是不是写成-ne了?.....
有个问题,chomp 去掉了换行,但是中间的分隔还是要有的,比如我加个空格
这么写是不行的,所以
perl -pe "chomp" a.txt > b.txt就没法控制了,
所以建议使用-n,然后自己控制print
多谢你啊,

brantc2011-04-13 10:28:51

neobilly: 你确定你已经运行过这个命令了吗?
你可以试试,yourfinal_file这个文件是空的,
当然,可以在命令行里头完成,但是至少应该打印啊
perl -ne "chomp ; pri.....
呃。。。
我估计可能你没有写对,应该是-pe,你是不是写成-ne了?

brantc2011-04-13 10:26:30

neobilly: 你确定你已经运行过这个命令了吗?
你可以试试,yourfinal_file这个文件是空的,
当然,可以在命令行里头完成,但是至少应该打印啊
perl -ne "chomp ; pri.....
运行了呀
在Windows XP上面:
C:\>type 1.txt
aa
bb
cc
dd
C:\>type 2.txt
The system cannot find the file specified.

C:\>perl -pe "chomp" 1.txt > 2.txt

C:\>type 2.txt
aabbccdd