Sponsored Content
Full Discussion: Multiline Grep
Top Forums UNIX for Dummies Questions & Answers Multiline Grep Post 302175164 by Yogesh Sawant on Thursday 13th of March 2008 07:47:22 AM
Old 03-13-2008
try this Perl script:
Code:
#!/usr/local/bin/perl
# multiliner.pl
use strict;
my $filename = shift;
open (FILE, "<", $filename)  or  die "Failed to read file $filename : $! \n";
my $whole_file;
{
    local $/;
    $whole_file = <FILE>;
}
close(FILE);
while ($whole_file =~ m#\<a\>(.*?)\<\/a\>#g) {
    print $1 . "\n";
}

run this script as:
Code:
perl multiliner.pl source.xml  > output.xml

 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Multiline replace problem

I have a data of the form 0.0117843924 0. 0. 0. 0. 0.011036017 0. 0. 0. 0. 0.0103351669 0. 0. 0. 0. 4839.41211 0. 0. 0. 0. 4532.08203 0. 0. 0. 0. I would like to insert a couple of blank lines before the 4839 line, every time it appears. The numbers in the... (2 Replies)
Discussion started by: mathis
2 Replies

2. Shell Programming and Scripting

assigning a multiline grep output which has been piped through sed to a shell variabl

Hi, I wish to format the output of a grep command in such a way that sed will be able to handle the newline characters held in the output. Since sed does not allow newlines to be contained in a replacement pattern, that means adding a backslash '\' character to the end of each line from... (8 Replies)
Discussion started by: timculhane
8 Replies

3. Shell Programming and Scripting

grep command to replace multiline text from httpd.conf file on Fedora

Hi, I am a newbie to shell scripting and to Linux environment as well. In my project I am trying to search for following text from the httpd.conf file <Directory '/somedir/someinnerdir'> AllowOverride All </Directory> and then remove this text and again rewrite the same text. The... (1 Reply)
Discussion started by: bhushan
1 Replies

4. Shell Programming and Scripting

multiline pattern matching

Hi, I have a file of the following from: Afghanistan gdpcapit|800 Akrotiri Albania gdpcapit|6000 now I want have the gdpcapit value next to the country when there is one like this: Afghanistan 800 gdpcapit|800 Akrotiri Albania 6000 gdpcapit|6000 How do I do this? I've... (4 Replies)
Discussion started by: KarelVH
4 Replies

5. UNIX for Dummies Questions & Answers

Need Multiline sed help!!

Hey everyone, I'm new to sed and I need to create a script for inserting one line of code at the beginning of every method in a Xcode project (over 6,000 methods). Each method Structure is (+ or -) (Various declarations-- could span multiple lines) ({) I've tried for days, any guidance would be... (2 Replies)
Discussion started by: jimmyz
2 Replies

6. Shell Programming and Scripting

MultiLine Patterns

Experts, I am novice unix user. At my work, most of our DBA's work on creating DDL's to create new tables in production. At every week we need to validate the scripts (do peer review) and it takes a while and also it is not effective when we have like 150 tables created in the scripts. I am... (3 Replies)
Discussion started by: ysvsr1
3 Replies

7. Shell Programming and Scripting

Need to get multiline input

As per my requirement, I need to get a multiline input. It can be stored in a file, that's not a problem. User will be prompted to enter steps. he should able to enter the steps in multiple lines by pressing enter. All I know in read command that reads the input till we press enter. Can someone... (5 Replies)
Discussion started by: annamalaikasi
5 Replies

8. Shell Programming and Scripting

Multiline sed

Hi guys, I am fairly comfortable with using the sed command if the string to be replaced is all on a single line. I was wondering is it possible to use sed command in a multiline way ? Say for example I have the below string on 2 different lines: { "key": "brandNameA", ... (3 Replies)
Discussion started by: Junaid Subhani
3 Replies

9. Shell Programming and Scripting

Need grep regex to extract multiline text between two strings

I have a file conatining the below: --- 10.9.16.116: /tmp/5835113081224811756.jar: hash: e6df90d38fa86f0e289f73d79cd2cfd2a29954eb /tmp/4603745991442278706.jar: hash: e6df90d38fa86f0e289f73d79cd2cfd2a29954eb 10.9.14.126: /tmp/conf/extra/httpd-ssl.conf: hash:... (1 Reply)
Discussion started by: mohtashims
1 Replies
libapache2-mod-perl2-2.0.7::docs::api::ModPerl::RegistryUsereContributed Perl Dlibapache2-mod-perl2-2.0.7::docs::api::ModPerl::RegistryLoader(3pm)

NAME
ModPerl::RegistryLoader - Compile ModPerl::RegistryCooker scripts at server startup Synopsis # in startup.pl use ModPerl::RegistryLoader (); use File::Spec (); # explicit uri => filename mapping my $rlbb = ModPerl::RegistryLoader->new( package => 'ModPerl::RegistryBB', debug => 1, # default 0 ); $rlbb->handler($uri, $filename); ### # uri => filename mapping using a helper function sub trans { my $uri = shift; $uri =~ s|^/registry/|cgi-bin/|; return File::Spec->catfile(Apache2::ServerUtil::server_root, $uri); } my $rl = ModPerl::RegistryLoader->new( package => 'ModPerl::Registry', trans => &trans, ); $rl->handler($uri); ### $rlbb->handler($uri, $filename, $virtual_hostname); Description This modules allows compilation of scripts, running under packages derived from "ModPerl::RegistryCooker", at server startup. The script's handler routine is compiled by the parent server, of which children get a copy and thus saves some memory by initially sharing the compiled copy with the parent and saving the overhead of script's compilation on the first request in every httpd instance. This module is of course useless for those running the "ModPerl::PerlRun" handler, because the scripts get recompiled on each request under this handler. Methods new() When creating a new "ModPerl::RegistryLoader" object, one has to specify which of the "ModPerl::RegistryCooker" derived modules to use. For example if a script is going to run under "ModPerl::RegistryBB" the object is initialized as: my $rlbb = ModPerl::RegistryLoader->new( package => 'ModPerl::RegistryBB', ); If the package is not specified "ModPerl::Registry" is assumed: my $rlbb = ModPerl::RegistryLoader->new(); To turn the debugging on, set the debug attribute to a true value: my $rlbb = ModPerl::RegistryLoader->new( package => 'ModPerl::RegistryBB', debug => 1, ); Instead of specifying explicitly a filename for each uri passed to handler(), a special attribute trans can be set to a subroutine to perform automatic remapping. my $rlbb = ModPerl::RegistryLoader->new( package => 'ModPerl::RegistryBB', trans => &trans, ); See the handler() item for an example of using the trans attribute. handler() $rl->handler($uri, [$filename, [$virtual_hostname]]); The handler() method takes argument of "uri" and optionally of "filename" and of "virtual_hostname". URI to filename translation normally doesn't happen until HTTP request time, so we're forced to roll our own translation. If the filename is supplied it's used in translation. If the filename is omitted and a "trans" subroutine was not set in new(), the loader will try using the "uri" relative to the "ServerRoot" configuration directive. For example: httpd.conf: ----------- ServerRoot /usr/local/apache Alias /registry/ /usr/local/apache/cgi-bin/ startup.pl: ----------- use ModPerl::RegistryLoader (); my $rl = ModPerl::RegistryLoader->new( package => 'ModPerl::Registry', ); # preload /usr/local/apache/cgi-bin/test.pl $rl->handler(/registry/test.pl); To make the loader smarter about the URI->filename translation, you may provide the "new()" method with a "trans()" function to translate the uri to filename. The following example will pre-load all files ending with .pl in the cgi-bin directory relative to "ServerRoot". httpd.conf: ----------- ServerRoot /usr/local/apache Alias /registry/ /usr/local/apache/cgi-bin/ startup.pl: ----------- { # test the scripts pre-loading by using trans sub use ModPerl::RegistryLoader (); use File::Spec (); use DirHandle (); use strict; my $dir = File::Spec->catdir(Apache2::ServerUtil::server_root, "cgi-bin"); sub trans { my $uri = shift; $uri =~ s|^/registry/|cgi-bin/|; return File::Spec->catfile(Apache2::ServerUtil::server_root, $uri); } my $rl = ModPerl::RegistryLoader->new( package => "ModPerl::Registry", trans => &trans, ); my $dh = DirHandle->new($dir) or die $!; for my $file ($dh->read) { next unless $file =~ /.pl$/; $rl->handler("/registry/$file"); } } If $virtual_hostname argument is passed it'll be used in the creation of the package name the script will be compiled into for those registry handlers that use namespace_from_uri() method. See also the notes on $ModPerl::RegistryCooker::NameWithVirtualHost in the "ModPerl::RegistryCooker" documentation. Also explained in the "ModPerl::RegistryLoader" documentation, this only has an effect at run time if $ModPerl::RegistryCooker::NameWithVirtualHost is set to true, otherwise the $virtual_hostname argument is ignored. Implementation Notes "ModPerl::RegistryLoader" performs a very simple job, at run time it loads and sub-classes the module passed via the package attribute and overrides some of its functions, to emulate the run-time environment. This allows one to preload the same script into different registry environments. Authors The original "Apache2::RegistryLoader" implemented by Doug MacEachern. Stas Bekman did the porting to the new registry framework based on "ModPerl::RegistryLoader". SEE ALSO
"ModPerl::RegistryCooker", "ModPerl::Registry", "ModPerl::RegistryBB", "ModPerl::PerlRun", Apache(3), mod_perl(3) perl v5.14.2 2013-03-12 libapache2-mod-perl2-2.0.7::docs::api::ModPerl::RegistryLoader(3pm)
All times are GMT -4. The time now is 05:54 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy