+ -
当前位置:首页 → 问答吧 → Linux 中用Perl 小问题

Linux 中用Perl 小问题

时间:2010-10-29

来源:互联网

运用Perl对文件处理,但是不在Perl程序中直接指定文件,而是调用Perl时在调用的命令中指定。
似乎是一个Linux的问题,希望有人能够解答!
比如:
Perl程序为:

use strict;
my $line="N/A";

while($line=<STDIN>) {
           chomp($line);
           $line=~s/\[(\d+)\]/$1/g;
           print $line, "\n";
}

目的是使目标文件每行[num]的方括号去掉,但是目标文件很多,想一个一个操作。
如果不用在perl 中写目标文件? 看见人操作  cat  filename | perl
但是我操作就是不行,只执行了  cat  命令

作者: kezhang   发布时间: 2010-10-29

多个文件的话,用shell结合perl:

for i in *; do perl -pi -e 's/\[(\d+)\]/$1/g' $i;done

作者: 兰花仙子   发布时间: 2010-10-29

我最近也替换文件里的内容。用的这些方法,看看值不值的借鉴:
egrep --color -Rm1  '^\[[0-9]+\]' /directory #查看目录下匹配上的文件内容
egrep -lRm1 '^\[[0-9]+\]' /directory | perl -pi -e 's/\[(\d+)\]/$1/g'

作者: liyangole   发布时间: 2010-10-29

对shell 不是很熟悉, 只是想用命令方式调用文件并用已有的perl处理。实际perl要复杂些。
如perl文件名为perl_start, 待处理的文件分别为A_file, B_file ,C_file & D_file .....还会引入新的文件。
想用文件名在命令行  XXX  A_file XXX perl_start
似乎看见过别人这样用,但是忘记如何操作,能帮忙解答吗?

作者: kezhang   发布时间: 2010-10-29