Help with regular expression


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Help with regular expression
# 1  
Old 12-15-2011
Help with regular expression

Hi All,

Need some help with a regular expression that I cant seem to work on. Say there is the following text -

Input
We all (need some) help some day (ps: when it rains) and I need to save some hay now.
During the rainy season (ps: when it might rain heavily) Seattle gets drenched but not (all of pacific) northwest.
one of the best things that could (ps: happen) with any one is winning a lottery(1 atlas)

Output
We all (need some) help some day and I need to save some hay now.
During the rainy season Seattle gets drenched but not (all of pacific) northwest.
one of the best things that could with any one is winning a lottery(1 atlas)



I only want to eliminate anything in parenthesis as long as it starts with ps:

here is what i did

Opera $cat text | sed 's/(ps:*.*)//g'

We all (need some) help some day and I need to save some hay now.
During the rainy season northwest.
one of the best things that could

...as you can see that is not working when there is any parenthesis after where it finds the ps:.

Please help.

Thanks
Manohar.
# 2  
Old 12-15-2011
It's a bit tricky because what seems a logical approach, /(ps:.*)/ , assumes a non-greedy match. Regex, however, is a greedy match and that expression will match up through the last close paren on the line. Something like this:

Code:
 sed 's/(ps:[^)]*)//g' input-file    # no need to cat, sed can read on it's own

will match (ps: followed by anything that isn't a paren (zero or more times) followed by a paren. This, is a non-greedy match and so for a line like:

Code:
 
here is (remains) my example (ps: removed) of input (remains too).

it will do what you expect.

Last edited by agama; 12-16-2011 at 01:50 AM.. Reason: clarification
This User Gave Thanks to agama For This Post:
# 3  
Old 12-16-2011
Code:
[root@hostname test]# perl -pe 's/\(ps:.*?\) //g' input
We all (need some) help some day and I need to save some hay now.
During the rainy season Seattle gets drenched but not (all of pacific) northwest.
one of the best things that could with any one is winning a lottery(1 atlas)

This User Gave Thanks to balajesuri For This Post:
# 4  
Old 12-16-2011
Agama & Balajesuri,

Both of your solutions worked just fine and Im quite thankful for them.

Im using the sed equivalent as I dont know perl and I just started getting my feet wet in Unix.

Only GOD knows how thankful Im for this forum.

regards,
Manohar.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regular expression

I would like to extract "JDBC Thin Client" from (PROGRAM=JDBC Thin Client); and "C:\Python26\python.exe" from (PROGRAM=C:\Python26\python.exe); "txm_v_awsrf_db.pr" from (PROGRAM=txm_v_awsrf_db.pr). if input line like "(PROGRAM=)", it return unknown. Would you help suggest a regular... (4 Replies)
Discussion started by: cstsang
4 Replies

2. Shell Programming and Scripting

Regular expression

Can someone please explain me what does this mean? ^{1,50}$ (1 Reply)
Discussion started by: Anupam_Halder
1 Replies

3. UNIX for Dummies Questions & Answers

Regular expression help

Hi, I am quite knew to scripting and I am trying to get a regular expression to work to check that a user enters a valid version number such as 1 or 1.1 or 12.3 etc. I dont seem to be able to get it to work as it picks up versions such as 1.......2. I only want it to work with a single dot.... (12 Replies)
Discussion started by: frodo61
12 Replies

4. UNIX for Advanced & Expert Users

sed: -e expression #1, char 0: no previous regular expression

Hello All, I'm trying to extract the lines between two consecutive elements of an array from a file. My array looks like: problem_arr=(PRS111 PRS213 PRS234) j=0 while } ] do k=`expr $j + 1` sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt ---some operation goes... (11 Replies)
Discussion started by: InduInduIndu
11 Replies

5. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

6. Shell Programming and Scripting

Integer expression expected: with regular expression

CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error. source $CA_VERSION_DATA if * ] then echo "CA_RELESE $CA_RELEASE is invalid" exit -1 fi + source /etc/ncgl/ca_version_data ++ CA_PRODUCT_ID=samxts ++ CA_RELEASE=6 ++ CA_WEEK_NO=7 ++... (3 Replies)
Discussion started by: ketkee1985
3 Replies

7. UNIX for Dummies Questions & Answers

ls with regular expression

I currently list and sort all the files in a directory which begin with an Upper Case C and end with the extension '#finished#'. Here is the command I use: ls -tr $currentDir/*.#finished# what i need to do now is list all the files in a directory that begin with upper case C and end... (3 Replies)
Discussion started by: rkgudde
3 Replies

8. Linux

Regular expression to extract "y" from "abc/x.y.z" .... i need regular expression

Regular expression to extract "y" from "abc/x.y.z" (2 Replies)
Discussion started by: rag84dec
2 Replies

9. Programming

What does the regular expression ['(^[^~]+~).*'] mean?

What does the regular expression +~).*'] mean while using it with regexec.When the string "RCHNUSNT35C~rs07/ASM-RS07" is used with the regular expression +~).*'] regexec gives an error. I know what regexec does,but i do not understand what this expression means wrt to this string... any help... (2 Replies)
Discussion started by: anupamar
2 Replies

10. Shell Programming and Scripting

Regular Expression + Aritmetical Expression

Is it possible to combine a regular expression with a aritmetical expression? For example, taking a 8-numbers caracter sequece and casting each output of a grep, comparing to a constant. THX! (2 Replies)
Discussion started by: Z0mby
2 Replies
Login or Register to Ask a Question