Perl REGEX - How do extract a string in a line?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl REGEX - How do extract a string in a line?
# 1  
Old 08-19-2009
Perl REGEX - How do extract a string in a line?

Hi Guys,

In the following line:

cn=portal.090710.191533.428571000,cn=groups,dc=mp,dc=rj,dc=gov,dc=br

I need to extract this string: portal.090710.191533.428571000

As you can see this string always will be bettween "cn=" and "," strings.

Someone know one regular expression to extract this string?

Any help will be very much appreciated

Best Regards
Pierre
# 2  
Old 08-19-2009
/^cn=([^,]*?),/
# 3  
Old 08-20-2009
Hi sweetblood,

Tanks a lot for your help!

I used your idea in the following code:

if( /cn=/ )
{
$result = $_;
$result =~ s/^cn=([^,]*?),//;
}
return $result

in this case your REGEX is returning cn=groups,dc=mp,dc=rj,dc=gov,dc=br

I need the opposite result.

I think a REGEX where in the first time remove the string cn=
so the result string will be portal.090710.191533.428571000,cn=groups,dc=mp,dc=rj,dc=gov,dc=br


The second REGEX will remove the entire string cn=groups,dc=mp,dc=rj,dc=gov,dc=br


To be lefting only the needed string portal.090710.191533.428571000

Can you help me?
Regards
Pierre
# 4  
Old 08-20-2009
try this...

Code:
echo cn=portal.090710.191533.428571000,cn=groups,dc=mp,dc=rj,dc=gov,dc=br | awk -F "cn=" '{print $2}' | awk -F "," '{print $1}'



---------- Post updated at 12:11 PM ---------- Previous update was at 11:04 AM ----------

euh, rather this...

Code:
echo cn=portal.090710.191533.428571000,cn=groups,dc=mp,dc=rj,dc=gov,dc=br | awk -F 'cn=|,' '{print $2}'

# 5  
Old 08-20-2009
Quote:
Originally Posted by maverick-ski
...
cn=portal.090710.191533.428571000,cn=groups,dc=mp,dc=rj,dc=gov,dc=br

I need to extract this string: portal.090710.191533.428571000
...
Someone know one regular expression to extract this string?
...
Try non-greedy regex match:

Code:
$ 
$ echo "cn=portal.090710.191533.428571000,cn=groups,dc=mp,dc=rj,dc=gov,dc=br" | perl -lne '/^cn=(.*?),/ && print $1'
portal.090710.191533.428571000
$

tyler_durden
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Help with understanding this regex in a Perl script parsing a 'complex' string

Hi, I need some guidance with understanding this Perl script below. I am not the author of the script and the author has not leave any documentation. I supposed it is meant to be 'easy' if you're a Perl or regex guru. I am having problem understanding what regex to use :confused: The script does... (3 Replies)
Discussion started by: newbie_01
3 Replies

2. Shell Programming and Scripting

Perl to extract whole number or decimal in regex

In the perl below I am trying to extract and print specic values from patterns using multiple regex. One of the patterns AF= may be a whole number or a decimal but I can not seem to capture both. I think it is the regex .*AF=(\d+\.\d+); as it is expecting a #.#### and it may only be a #. I tried... (2 Replies)
Discussion started by: cmccabe
2 Replies

3. Shell Programming and Scripting

Perl to extract information from a file line by line

In the below perl code I am using tags within each line to extract certain information. The tags that are used are: STB >0.8 is STRAND BIAS otherwise GOOD FDP is the second number GO towards the end of the line is read into an array and the value returned is outputed, in the first line that... (1 Reply)
Discussion started by: cmccabe
1 Replies

4. Shell Programming and Scripting

perl regex string match issue..kindly help

i have a script in which i need to skip comments, and i am able to achieve it partially... IN text file: {**************************** {test : test...test } Script: while (<$fh>) { push ( @data, $_); } if ( $data =~ m/(^{\*+$)/ ){ } With the above match i am... (5 Replies)
Discussion started by: avskrm
5 Replies

5. Shell Programming and Scripting

Perl regex to remove a segment in a line

Hello, ksh on Sun5.8 here. I have a pipe-delimited, variable length record file with sub-segments identified with a tilda that we receive from a source outside of our control. The records are huge, and Perl seems to be the only shell that can handle the huge lines. I am new to Perl, and am... (8 Replies)
Discussion started by: gary_w
8 Replies

6. Shell Programming and Scripting

Perl: Regex, string matching

Hi, I've a logfile which i need to parse and get the logs depending upon the user input. here, i'm providing an option to enter the string which can be matched with the log entries. e.g. one of the logfile entry reads like this - $str = " mpgw(BLUESOAPFramework):... (6 Replies)
Discussion started by: butterfly20
6 Replies

7. Shell Programming and Scripting

perl regex multi line cut

hello mighty all there's a file with lots of comments.. some of them looks like: =comment blabla blablabla bla =cut i'm trying to cut this out completely with this code: $line=~s/^=.+?=cut//sg; but no luck also tryed to change it abit but still I don't understand how the... (9 Replies)
Discussion started by: tip78
9 Replies

8. Shell Programming and Scripting

Perl Extract String

Hi, I have a string like "something is good wanted (bla bla)" I need to get the world "wanted" from this string and "assign it to a variable".. but it's not a static word so i want to get that word by searching the pattern as follows <space>desiredword<space>( and i tried to get that... (6 Replies)
Discussion started by: xlynx3
6 Replies

9. Shell Programming and Scripting

Perl Regex string opperation

I'm working on a basic log parser in perl. Input file looks like: len: 120713 foo bar file size of: testdir1/testdir1/testdir1/testdir1/testfile0 is 120713Of course there are tens of thousands of lines... I'm trying to compare the len and filesize values. #!/usr/bin/perl use strict; use... (2 Replies)
Discussion started by: dkozel
2 Replies

10. Shell Programming and Scripting

how do i strip this line using perl regex.

I have a variable dynamically generated $batch = /dataload/R3P/interface/Bowne/reports/RDI00244.rpt Now I'd like to strip '/dataload/R3P/interface/Bowne/reports/RDI' and '.rpt' from this variable my output should be only 00244 how to do this using perl regex.I'm a newbie to perl and would... (1 Reply)
Discussion started by: ramky79
1 Replies
Login or Register to Ask a Question