regex to match basename


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting regex to match basename
# 1  
Old 08-26-2009
regex to match basename

Hi

Can somebody please help me know how do i match the basename using a regular expression using posix standard in shell script

suppose i want to match

/u01/Sybase/data/master.dbf the result should be master.dbf as i want to match everything after the last /

regards
# 2  
Old 08-26-2009
Code:
 echo /u01/Sybase/data/master.dbf | grep -o '[^/]*$'

# 3  
Old 08-26-2009
If u make a little search, you could have found the answer yourself...
Code:
 
>str="/u01/Sybase/data/master.dbf "
>echo ${str##*/}
>master.dbf

# 4  
Old 08-26-2009
>str="/u01/Sybase/data/master.dbf"
>echo $str
/u01/Sybase/data/master.dbf
>basename $str
master.dbf
# 5  
Old 08-27-2009
Hi

Thanks to all responded and the responses are also excellent at this point of time i am very keen on the regex solution

Code:
 echo /u01/Sybase/data/master.dbf | grep -o '[^/]*$'

due to my inquisitiveness in regex what does this regex do

Code:
grep -o '[^/]*$'

I know individually
^ matches begining of the line
$ matches end of the line
* matches anything
/ is a escape sequence

i dont understand what a [] does and what does the combined expression all put together mean including the greps -o switch
# 6  
Old 08-27-2009
Quote:
Originally Posted by xiamin
Hi

Thanks to all responded and the responses are also excellent at this point of time i am very keen on the regex solution

Code:
 echo /u01/Sybase/data/master.dbf | grep -o '[^/]*$'

due to my inquisitiveness in regex what does this regex do

Code:
grep -o '[^/]*$'

I know individually
^ matches begining of the line
$ matches end of the line
* matches anything
/ is a escape sequence

i dont understand what a [] does and what does the combined expression all put together mean including the greps -o switch
I'll try to explain it:

Code:
[^/]*$

[] is called a bracket expression (see man grep).

^ as first character within the bracket expression means: don't match characters within the brackets

[^/] means select all characters except a slash

*$
means match the characters untill the last character

Thus the whole regex means: select all the characters till the end without a slash.


Regards
# 7  
Old 08-27-2009
Hi Franklin

Thank you for the excellent explanation.

However what does the -o do it doesnt sem to work on AIX

when i do

Code:
echo /u01/Sybase/data/master.dbf | grep '[^/]'

shoudlnt it return everything minus the / slash in my case it returns

Code:
u01 Sybase data master.dbf




regards

Last edited by xiamin; 08-27-2009 at 05:51 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Mailq regex match

Hi, # mailq | awk '{match($0, /quota/)} {print $0}' | head -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 9A6A7DE117E 84309 Sat Sep 30 14:14:50 alerts-noreply+xxxxx=xxx.sg@xxx.xx.xxx (host alt1.gmail-smtp-in.l.google.com said: 452-4.2.2 The email account that you... (2 Replies)
Discussion started by: ashokvpp
2 Replies

2. Shell Programming and Scripting

Sendmail K command regex: adding exclusion/negative lookahead to regex -a@MATCH

I'm trying to get some exclusions into our sendmail regular expression for the K command. The following configuration & regex works: LOCAL_CONFIG # Kcheckaddress regex -a@MATCH +<@+?\.++?\.(us|info|to|br|bid|cn|ru) LOCAL_RULESETS SLocal_check_mail # check address against various regex... (0 Replies)
Discussion started by: RobbieTheK
0 Replies

3. Shell Programming and Scripting

Only Regex pattern match help

Hi We have a tool to monitor logs in our environment. The tool accepts log pattern match only using regex and I accept I am a n00b in that:confused:. I had been banging my head to make it work without much success and at last had to turn on to my last option to post it here. I had got great... (2 Replies)
Discussion started by: radioactive9
2 Replies

4. Shell Programming and Scripting

Regex to match only first occurence with grep

Hello to all, How would be the correct regex to match only the first occurence of the pattern 3.*6. I'm trying with 3.*6 trying to match only 34rrte56, but with my current regex is matching 4rrte567890123456789123powiluur56. And if I try with ? doesn't print anything echo... (6 Replies)
Discussion started by: Ophiuchus
6 Replies

5. Shell Programming and Scripting

Regex: Get the word before match

Hi Input: MYTEXT.aa.bb cc.MYTEXT.aa.bb ee.dd.cc.MYTEXT.aa.bb cc.NOTEXT.a.b Output: <empty> cc cc <empty> I would like to use a regex to extract the last word before MYTEXT without the dot (2 Replies)
Discussion started by: chitech
2 Replies

6. Shell Programming and Scripting

regex to match digits not in dates

hi all, im having problems. I need to change all number 10 in a text file to word form, or in short from 10->ten. the thing is number 10 including in dates such as 10/22/1997 or 03-10-2011 should not be changed. im having some trouble because the file contains numbers like "price range from... (11 Replies)
Discussion started by: perlishell
11 Replies

7. Shell Programming and Scripting

match all occurances of session id with one regex?

So far I have this little regex to match sessionids: session.id={32}What must I add to make it match all occurances i want to match?session_id=993e3cf23ffff68a2b619518829192b9 ?session_id=993e3cf23ffff68a2b619518829192b9 &session_id=993e3cf23ffff68a2b619518829192b9... (1 Reply)
Discussion started by: lowmaster
1 Replies

8. UNIX for Advanced & Expert Users

Regex to match IP address

What do you think of this regex to match IP address? I have been reading up on regex and have seen some really long ones for IP. Would this fail in any scenarios? (+\.){3}* (5 Replies)
Discussion started by: glev2005
5 Replies

9. UNIX for Dummies Questions & Answers

regex - display all occurrences of match

i don't want to display the whole line but i want to display all the string(s) that match the Regex, even if their are more then one match per line in my file. data: mds_ar/bin/uedw92wp.ksh:cat $AI_SQL/wkly_inqry.sql $AI_SQL/wkly_inqry_trtry.sql $AI_SQL/wkly_nb_trtry.sql \... (18 Replies)
Discussion started by: danmauer
18 Replies

10. UNIX for Dummies Questions & Answers

Regex in if-then-else statement to match strings

hello I want to do a pattern match for string in the if statement, but I am not sure how to use regex inside the if statement. I am looking for something like this: if {2,3} ]; then ..... .... ... fi (7 Replies)
Discussion started by: rakeshou
7 Replies
Login or Register to Ask a Question