• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 551
  • Last Modified:

extract data from text file

I have a 30,000 file text file from which I need to extract data; I will start with example.

Let's say I have three network object-group in the file as A,B and C with different objects as below:

object-group network C
 network-object host 10.57.31.66
 network-object host 10.57.31.67
 network-object host 10.80.40.201
 network-object host 10.80.40.202
object-group network A
 network-object 10.14.60.0 255.255.252.0
 network-object 10.14.63.0 255.255.255.0
 network-object 10.14.64.0 255.255.255.0
object-group network B
 network-object host 10.13.5.116
 network-object host 10.13.5.117


I need to extract group A and C from the file along with all other lines; i.e. line with object A and next 3 lines and then object C and next 4 lines.

Please help.
0
dpk_wal
Asked:
dpk_wal
  • 4
2 Solutions
 
wilcoxonCommented:
This should do it...

If you have any questions or it doesn't work as you'd like, let me know...
#!/usr/local/bin/perl

use strict;
use warnings;

# replace A and C with actual names
my %keeps = ('network A' => 1, 'network C' => 1);

# replace $file with actual filename
open IN, $file or die "could not open $file: $!";

my $keep;
while (<IN>) {
    chomp;
    if (m{^object-group\s+(.*?)\s*$}) {
        $keep = exists($keeps{$1}) ? 1 : 0;
    }
    next unless $keep;
    # replace print with whatever you want to do with the lines
    # push them into an array if you want to keep them for later
    print $_, "\n";
}

Open in new window

0
 
dpk_walAuthor Commented:
Thank you for quick post; in above can we also read A and B from a text file.
The file would have entries like:
A
B
.
.
.
Z

Regards.
0
 
dpk_walAuthor Commented:
Sorry for my limited knowledge with scripting, here is what I have done:
-rwxrwxrwx  1 root root 525 Feb 18 12:14 a
-rwxrwxrwx  1 root root 393 Feb 18 12:12 txtFile

Changed code above as:
#!/usr/bin/perl
open IN, $txtFile or die "could not open $txtFile: $!";

Getting error as below:
[root@myhost]# ./a
Global symbol "$txtFile" requires explicit package name at ./a line 10.
Global symbol "$txtFile" requires explicit package name at ./a line 10.
Execution of ./a aborted due to compilation errors.

Thank you for all your help.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
ozoCommented:
open IN, "<txtFile" or die "could not open txtFile: $!";
0
 
dpk_walAuthor Commented:
Thank you for all the help.
0
 
dpk_walAuthor Commented:
Thank you!
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now