perl - 帮助解析许多小文本文件中的数字值

时间:2011-06-03 13:42:05

标签: perl parsing

我在公共目录(/ home / test)中有许多文件,其名称为:

ABC_1_20110508.out    
ABC_1_20110509.out
ABC_1_20110510.out
..

每个文本文件都有一条如下所示的记录:

(count, 553076)

我想删除这些数字,然后将它们一次列在一个文件中。

553076
1005
7778000
...

有人可以告诉我如何使用perl执行此操作吗?

3 个答案:

答案 0 :(得分:3)

使用此正则表达式:

/\(\w+, (\d+)\)/

您还可以使用魔术菱形运算符一次迭代所有文件:

while (<>) {
    # extract the number
    /\(\w+, (\d+)\)/;

    # print it out
    print $1, "\n";

}

如果您的perl脚本被称为myscript.pl,您可以这样调用它:

$ myscript.pl /home/test/ABC_1_*.out

答案 1 :(得分:2)

对我来说听起来像是一个单行:

$ perl -wne '/(\d+)/ && print "$1\n"' *.out > out.txt

答案 2 :(得分:0)

最简单的方法是使用<>运算符。在调用不带参数的perl程序时,<>就像<STDIN>一样。如果您将其称为参数,<>将为您提供@ARGV中每个文件的内容,而无需您手动管理文件句柄。

例如:./your_script.pl /home/test/ABC_1_????????.outcat /home/test/ABC_1_????????.out | ./your_script.pl。这些会产生同样的效果。