getrc
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:1k
源码类别:

通讯编程

开发平台:

Visual C++

  1. eval 'exec perl -I ./bin -S $0 ${1+"$@"}' #-*-Perl-*-
  2. if 0;
  3. require 5.001;
  4. ($progname) = ($0 =~ m!([^/]+)$!);
  5. sub usage {
  6. die <<ENDUSAGE;
  7. usage: $progname -s node1 [options] [trace file...]
  8. get trace files that match certain criteria related to source, dest or flow-id
  9. options:
  10. -o outfile write subset trace to output file
  11. -b bi-directional, i.e. gather lines 
  12. -d node2 specify destination
  13. -f flowid specify flow id
  14. -e              get event-trace
  15. ENDUSAGE
  16. }
  17. $usage = "usage: $progname [-b] [-e] [-o outfile] -s node1 [-d node2] [-f flowid] [trace files...]n";
  18. $opt_s = -1;
  19. $opt_d = -1;
  20. $opt_b = 0;
  21. $opt_f = -1;
  22. $opt_e = 0;
  23. use Getopt::Std;
  24. #require 'getopts.pl';
  25. (getopts('bo:s:d:ef:') && $opt_s != -1) || usage;
  26. #(&Getopts('bo:s:d:ef:') && $opt_s != -1) || usage;
  27. open(STDOUT, ">$opt_o") if ($opt_o);
  28. while (<>) {
  29.     /^v/ && do {
  30. print $_;
  31. next;
  32.     };
  33.     @F = split;
  34.     
  35.     if ($F[2] == $opt_s) { # if src matches
  36. if (($opt_f != -1) && $F[7] != $opt_f) {
  37. next;
  38. }
  39. print $_ unless (($opt_d != -1) && $F[3] != $opt_d); # print unless dst & !match
  40. next;
  41.     }
  42.     if ($opt_b && $F[3] == $opt_s) { # else if bi && dst fld mch
  43. if (($opt_f != -1) && $F[7] != $opt_f) {
  44. next;
  45. }
  46. print $_ unless (($opt_d != -1) && $F[2] != $opt_d); # prt unless dst & !mch sfld
  47. next;
  48.     }
  49.     if ($opt_e) {
  50. print $_ unless !($F[0] eq 'E');
  51. next;
  52.     }
  53.     
  54. }
  55. close(STDOUT);
  56. exit;