使用正则表达式查找匹配项-Perl

用户名

我有一个TCPDUMP文件,其中包含USER和PASS单词的许多用法,我需要制定一个正则表达式以查找所有单词,然后打印出每个单词的数量。(或任何其他方式;尽管如此,正则表达式是我的首选)。我认为我的分歧似乎行不通。不知道我在这里怎么做错了,所以有什么想法吗?提前致谢!

这是输入文件的示例(注意:这只是2006行的文件的第一行。格式相同,但是数字,符号和字母在每一行中都发生变化)

22:28:28.374595 IP 98.114.205.102.1821 > 192.150.11.111.445: Flags [S], seq 147554406, win 64240, options [mss 1460,nop,nop,sackOK], length 0E...<[email protected].... ...\.bfP....Y..echo open 0.0.0.0 8884 > USER 1 1 >>

码:

#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;

#opens txt file: read mode
open MYFILE, '<', 'source_file.txt' or die $!;

#opens output txt file: write mode
open OUT, '>', 'Summary_Report.txt' or die $!;

#open output txt file: write mode
#used to store header 'split' info
open OUTFILE, '>', 'Header.txt' or die $!;

my $start_time = undef;
my $end_time;
my $linenum = 0; 
my $user;
my $pass;

while (<MYFILE>) { 
    chomp; 
    $linenum++; 
    #print ": $_\n"; ###if I need to see the lines (check)###

    #separate pieces of information from TCPDUMP into list
    my @header = split (' ',$_);
    print OUTFILE "$linenum: @header\n\n";

    if (/^22:28/ && !defined($start_time)) {
        $start_time = $header[0];
        #print "$start_time\n"; ###used as a check###
    }   

    if ($_ = /22:28/) {
        $end_time = $header[0];
    }       

    if ($_ =~ m/USER/i) {
        $user = $header[10];
    }

    }

print OUT "Total # of times phrases were used:\n\n
USER (variations thereof) = $user\n\n
PASS (variations thereof) = $pass\n\n\n";
扎克·莱顿(Zach Leighton)
my @lines = (<MYFILE>);
my @matches = grep { $_ =~ /(PASS|USER)/i } @lines;

应该管用?

带行号:

my @lines = (<MYFILE>);
my %results; 
map { 
    if ($lines[$_] =~ /(pass|user)/i) {
      $results{$_} = $lines[$_];
    }
} 0..$#lines;

%results将具有键作为行号,值是line。Grep更快,因为它是递归的,这将是O(n2)iirc。

现在..

map {

  #separate pieces of information from TCPDUMP into list
  my @header = split (' ',$results[$_]);
  print OUTFILE "$_: @header\n\n";

  if (/^22:28/ && !defined($start_time)) {
     $start_time = $header[0];
     #print "$start_time\n"; ###used as a check###
  }   

  if ($results[$_] = /22:28/) {
     $end_time = $header[0];
  }       

  if ($results[$_] =~ m/USER/i) {
      $user = $header[10];
  }

} keys %results;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找从Perl中的特定位置开始的正则表达式匹配项

来自分类Dev

Perl 正则表达式查找并返回每个可能的匹配项

来自分类Dev

Perl迭代正则表达式匹配项的数量

来自分类Dev

单个冒号的Perl正则表达式匹配项

来自分类Dev

用Perl正则表达式提取匹配项

来自分类Dev

在Perl中使用正则表达式进行匹配

来自分类Dev

Perl正则表达式:与此匹配,但不匹配

来自分类Dev

perl正则表达式,用于将多个匹配项替换为相应的替换项

来自分类Dev

Perl给定字符串中正则表达式的所有匹配项

来自分类Dev

Perl正则表达式从替换中返回匹配项

来自分类Dev

在Perl中按换行符分隔正则表达式匹配项

来自分类Dev

Perl-提取所有正则表达式匹配项

来自分类Dev

Perl正则表达式从匹配项中排除可选单词

来自分类Dev

在Perl正则表达式数组中找到未定义的匹配项

来自分类Dev

perl正则表达式,用于将多个匹配项替换为相应的替换项

来自分类Dev

在Perl中按换行符分隔正则表达式匹配项

来自分类Dev

在Perl正则表达式“查找并替换”中,如何分别选择每个匹配结果?

来自分类Dev

Perl正则表达式查找不匹配的字符串

来自分类Dev

如果正则表达式匹配A而不是正则表达式B,则Perl打印

来自分类Dev

Perl正则表达式以查找先前的CSV字段

来自分类Dev

Perl和Bash:查找正则表达式

来自分类Dev

Perl正则表达式以查找先前的CSV字段

来自分类Dev

perl Multiline查找并用正则表达式替换

来自分类Dev

Perl正则表达式无法匹配行尾

来自分类Dev

Perl正则表达式以匹配特殊字符

来自分类Dev

打印正则表达式匹配Perl

来自分类Dev

Perl正则表达式匹配范围太广

来自分类Dev

Perl正则表达式匹配元音和辅音

来自分类Dev

Perl正则表达式条件匹配

Related 相关文章

  1. 1

    查找从Perl中的特定位置开始的正则表达式匹配项

  2. 2

    Perl 正则表达式查找并返回每个可能的匹配项

  3. 3

    Perl迭代正则表达式匹配项的数量

  4. 4

    单个冒号的Perl正则表达式匹配项

  5. 5

    用Perl正则表达式提取匹配项

  6. 6

    在Perl中使用正则表达式进行匹配

  7. 7

    Perl正则表达式:与此匹配,但不匹配

  8. 8

    perl正则表达式,用于将多个匹配项替换为相应的替换项

  9. 9

    Perl给定字符串中正则表达式的所有匹配项

  10. 10

    Perl正则表达式从替换中返回匹配项

  11. 11

    在Perl中按换行符分隔正则表达式匹配项

  12. 12

    Perl-提取所有正则表达式匹配项

  13. 13

    Perl正则表达式从匹配项中排除可选单词

  14. 14

    在Perl正则表达式数组中找到未定义的匹配项

  15. 15

    perl正则表达式,用于将多个匹配项替换为相应的替换项

  16. 16

    在Perl中按换行符分隔正则表达式匹配项

  17. 17

    在Perl正则表达式“查找并替换”中,如何分别选择每个匹配结果?

  18. 18

    Perl正则表达式查找不匹配的字符串

  19. 19

    如果正则表达式匹配A而不是正则表达式B,则Perl打印

  20. 20

    Perl正则表达式以查找先前的CSV字段

  21. 21

    Perl和Bash:查找正则表达式

  22. 22

    Perl正则表达式以查找先前的CSV字段

  23. 23

    perl Multiline查找并用正则表达式替换

  24. 24

    Perl正则表达式无法匹配行尾

  25. 25

    Perl正则表达式以匹配特殊字符

  26. 26

    打印正则表达式匹配Perl

  27. 27

    Perl正则表达式匹配范围太广

  28. 28

    Perl正则表达式匹配元音和辅音

  29. 29

    Perl正则表达式条件匹配

热门标签

归档