【发布时间】:2013-03-25 16:13:21
【问题描述】:
我有一个用以下列格式分隔的日志文件:
<date> <time> | <fruit> | <color> | <num_1> | <num_2> | <num_3>
例如:
2013-03-27 23:01:52 | apple | green | 55 | 120 | 29
2013-03-27 23:01:56 | plumb | purple | 28 | 1 | 394
2013-03-27 23:01:59 | apple | red | 553 | 21 | 7822
我想编写一个 perl 脚本(尽管 python 或 bash 也是可以接受的),greps 在 <date> 和 <time> 字段(第 1 列)和 <num_1>、<num_2> 或 @ 之外987654328@,取决于你给脚本的输入。因此,在上述信息上运行perl extract.pl 2 将为您提供<date>、<time> 和<num_2>:
2013-03-27 23:01:52 | 120
2013-03-27 23:01:56 | 1
2013-03-27 23:01:59 | 21
我尝试了以下方法,但似乎不起作用:
#!/usr/bin/perl
use warnings;
use strict;
my $col = $1;
print `grep "myapplog.txt" "m/_(\d{4})(\d\d)(\d\d)/ | $col"`
在这里,我将col var 设置为脚本的第一个参数,然后尝试打印与第一列的日期时间和期望<num_X> 列匹配的grep。有任何想法吗?提前致谢。
【问题讨论】:
-
$1不是脚本的第一个参数。那将是$ARGV[0]。$1是第一个正则表达式捕获缓冲区的内容。