Using a regular expression, I would like multiple lines to be matched.
By default, a period (.) matches any character except newline. However, (?s) and /s modifiers are supposed to force . to accept a newline and to match any character including a newline.
However, the following two perl statements that use (?s) and /s failed to find a pattern spanning multiple lines.
and
where the content of srcfile is
which can be created by
I wanted the regular expression to match the string consisting of two lines that starts with "a" and ends with "f".
In other words, I wanted to replace
So, I wanted dstfile to become
However, the above perl statements failed. The regular expressions in the above perl statements matched nothing, making dstfile identical to srcfile.
What went wrong?
What regular expression would match multiple lines?
How can a perl or bash command line find a pattern spanning multiple lines in srcfile, replace it with another, and save the modified text into dstfile?
Many thanks, in advance.
Last edited by Scott; 01-18-2014 at 10:35 AM..
Reason: More code tags
perl -pe operates on a line-by-line basis, so it will not match a multiline pattern
You could try something like (within a paragraph):
or (within a file)
Last edited by Scrutinizer; 01-18-2014 at 11:08 AM..
This User Gave Thanks to Scrutinizer For This Post:
Location: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Posts: 2,288
Thanks Given: 430
Thanked 480 Times in 395 Posts
Hi.
Quote:
Originally Posted by LessNux
... I do not understand what are meant by "@(#)", "p1" and "p213" ...
The shell, perl, awk, etc. all ignore anything after an unquoted "#". The string "@(#)" is a special key so that a one-line description of the script can be extracted. For example using script p1 as input: $ what ./p1 wil produce this on standatrd output:
This is an old convention, but we have found it useful to generate local indices of scripts. We have written a script to do this as well as create the indices for our shop. You might find an heirloom man page for command what. See an example of the string at bash - shell script templates - Stack Overflow
The string "p1" is the name of the file in which the perl script resides.
echo 20110101 | awk '{ print match($0,/^((17||18||19||20)|)-*(|0|1)-*(|0||3)$/))
I am getting a match for the above, where as it shouldn't, as there is no hyphen in the echoed date.
Another question is what is the difference between || and | in the above statement (4 Replies)
Hi Everybody!
I need some help with a regular expression in Perl that will match files named messages, but also files named message.1, message.2 and so on. So really I need one that will find messages and messages that might be followed by a period and a digit without matching other files like... (2 Replies)
hi everyone
suppose we have two scenario
echo ABCD | grep \{4\}
DATE
echo SYSDATE | grep \{4\}
SYSDATE
i want to match the string of four length only please help (5 Replies)
I am trying to match a similar line using grep with regular expression
the line is
/remote/mac/pbbbb/abc/def/hij/hop/include/abc/tif/element/test/testfiles/Office.cpp:57: const OfficeType& getType().get() const;
I just need to extract the bold characters using grep with regular expression.... (5 Replies)
Hi all,
I am looking for a regex syntax to match repeated appearance. Likes,
']+]+' matches for string '65A SOME MORE AND 78B'
Now, this gets messy if I need to extract all such repeated appearance. I don't want to write ] four or five times for matching repeated appearance.
Thanks in... (2 Replies)
Hello All
I have file which contain sample data like below -
test.txt
----------------------------------------------
jambesh aaa india
trxxx
sdasd
mentor
asss
light
train
bbblah
---------------------------------------------
I want to write a regX which would print only those... (4 Replies)
Hi all,
any idea how to match the following:
char*<no or any string or space> buf and
char *<no or any string or space> buf
i need to capture the buf characters too.
currently i need two checks to cover this:
#search char* <any string> buf or char *<any string> buf
@noarray =... (2 Replies)
Hi,
I'm struggling with a regex that would match a 'b' that follows an 'a' and is at the end of a string of non-white characters. For example:
Line 1: aba abab b abb aab bab baa
I can find the right strings but I'm lacking knowledge of how to "discard" the bits that precede bs.... (2 Replies)
Hi
I have a file with data arranged into columns. The first column is the chromosome name.
When I use grep to subset only rows with chr1, I get chr1 but also chr10, chr11,..
How do I get only rows with chr1?
grep chr1 filein > fileout
head fileout
chr1 59757841
chr11 108258691 ... (2 Replies)