开发者

How do I split a file on a delimiter that is on its own line?

I have the following file:

some data
some data 1
some data 1
hostname = abc
some data
some data 1
some data 1
some data
some data 1
some data 1
hostname = xyz
some data
some data 1
some data 1
some开发者_Go百科 data
some data 1
some data 1
hostname = pqr
some data
some data 1
some data 1
some data
some data 1
some data 1

How can I extract the lines between two hostname line entries using Perl?


How about:

#!perl -w
my @someArray;

while (<DATA>) {
    if (/hostname.*/) {
        print @someArray;
        @someArray = ();
    }
    else {
        push (@someArray, $_);
    }
}

__DATA__
some data
some data 1
some data 1
hostname = abc
some data
some data 1
some data 1
some data
some data 1
some data 1
hostname = xyz
some data
some data 1
some data 1


Slurp the whole thing into a string, $string, and do something like this:

$string =~ /hostname = abc\n(.*)hostname = xyz\n/s;

The lines between the abc and xyz hostname lines will be in $1 after that.


perl -nle'/hostname = abc/../hostname = xyz/&&print' datafile


split indeed suffices, just give it the right pattern.

use DDS; Dump split /hostname = .*\n/, 'some data
some data 1
some data 1
hostname = abc
some data
some data 1
some data 1
some data
some data 1
some data 1
hostname = xyz
some data
some data 1
some data 1
some data
some data 1
some data 1
hostname = pqr
some data
some data 1
some data 1
some data
some data 1
some data 1';

output

$VAR1 = "some data\nsome data 1\nsome data 1\n";
$VAR2 = "some data\nsome data 1\nsome data 1\nsome data\nsome data 1\nsome data 1\n";
$VAR3 = "some data\nsome data 1\nsome data 1\nsome data\nsome data 1\nsome data 1\n";
$VAR4 = "some data\nsome data 1\nsome data 1\nsome data\nsome data 1\nsome data 1";
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜