Изменить текст сценария Perl в CSV - PullRequest
0 голосов
/ 02 апреля 2011

Привет! Я написал Perl-скрипт для вывода текстового файла со сканированием портов, чтобы превзойти его. Теперь мне нужно отформатировать текстовый файл, чтобы при печати в формате Excel он был в формате CSV. Как например Сервер, порт, протокол, состояние 69.25.194.14, 25, tcp, http

Вот мой код, который, я надеюсь, вы, ребята, могли бы изменить. Код до сих пор выводит текстовый файл в Excel, и это хорошо, теперь мне просто нужно его изменить, чтобы он мог отображать его в формате csv в текстовом файле и выводить текстовый файл, чтобы преуспеть :

$input = `Cat /cygdrive/c/Windows/System32/test11.txt | grep -v 'SYN Stealth' |grep -v'Discovered'`;
chomp input;
$output =" /cygdrive/c/Users/bpaul/Desktop/194.csv ";
if (! -e "$output")
{
`touch $output`;
}
open (OUTPUTFILE, ">$output") || die "Can't Open file $output";
print OUTPUTFILE "$input\n";
close (OUTPUTFILE);

Вот кусок моего текстового файла

Nmap scan report for 69.25.194.2 Host is up (0.072s latency). 
Not shown: 9992 filtered ports PORT STATE SERVICE 
25/tcp open smtp
80/tcp open http
82/tcp open xfer
443/tcp open
https 4443/tcp closed
pharos 5666/tcp closed
nrpe 8080/tcp closed
http-proxy 9443/tcp closed tungsten-https

Может кто-нибудь изменить мой код. Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 апреля 2011

Это близко, но вход требует дополнительной фильтрации.

#!/usr/bin/env perl

use strict;
use warnings;

use Text::CSV;
my $csv = Text::CSV->new();

my $in_file = '/cygdrive/c/Windows/System32/test11.txt';
open my $in_fh, '<', $in_file or die "could not open $in_file: $!\n";

my @rows = ();
while( my $line = <$in_fh> ){
  chomp $line;
  next if $line =~ m{ SYN Stealth }msx;
  next if $line =~ m{ Discovered }msx;

  push @rows, [ split m{ \s+ }msx, $line ];
}
close $in_fh or die "could not close $in_file: $!\n";

$csv->eol( "\n" );

my $out_file = '/cygdrive/c/Users/bpaul/Desktop/194.csv';
open my $out_fh, '>', $out_file or die "could not open $out_file: $!\n";

for my $row ( @rows ){
  $csv->print( $out_fh, $row ) or die "could not print to $out_file: $!\n";;
}
close $out_fh or die "could not close $out_file: $!\n";
0 голосов
/ 02 апреля 2011

Как только вы укажете, что вы хотите в каких столбцах (я не могу судить по вашему вопросу), я посмотрю на Text::CSV::print для вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...