Help regarding behavior sed regexp query


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help regarding behavior sed regexp query
# 1  
Old 11-18-2009
Help regarding behavior sed regexp query

Hi all,

I have one question regarding sed regexp (or any regexp in general),

I have some path like this

C:/Abc/def/ghi/jkl in a file file1

Now if i use following code
Code:
cat file1 | sed 's#\(.*\)/.*#\1#'

Now it give me following output
C:/Abc/def/ghi, which is fine

But i just want to know that in this sed code, why it is treating only last forward slash in file1 as the base for creating value of subsection (.*). i mean to say why it is treating C:/Abc/def/ghi as value of subsection. We are having 5 forward slashes in file1, why not it is picking upto C:/Abc/def.

Is that the property of regexp that if a sentence has five forward slashes & i use .*/.*, it will treat forward slash as last forward slash in file.

Can any one please suggest me some article/link to this question. I hope you are getting my question.

Thanks in advance

Sarbjit

Last edited by sarbjit; 11-18-2009 at 11:03 AM..
# 2  
Old 11-18-2009
Hi the regexp in sed is greedy, which means it will try to find the longest possible match.
# 3  
Old 11-18-2009
Quote:
Originally Posted by sarbjit
Hi all,

I have one question regarding sed regexp (or any regexp in general),

I have some path like this

C:/Abc/def/ghi/jkl in a file file1

Now if i use following code
Code:
cat file1 | sed 's#\(.*\)/.*#\1#'


UUOC

Code:
sed 's#\(.*\)/.*#\1#' file1

If you want to match only to the first slash, first match only those characters that are not slashes:

Code:
sed 's#\([!/]*\)/.*#\1#' file1

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

sed with regexp in Linux

OFF 00280456 - 2014|1|2020_STATUS|GROUP_NAME|SUBGROUP_NAME|CLASS_NAME|GROUP_ID|SUBGROUP_ID I have above header in file. I need to replace 2020_STATUS with STATUS. 2020_STATUS is not always same but the column name will have STATUS all of the time. For instance column name might be 2019_STATUS... (1 Reply)
Discussion started by: jmadhams
1 Replies

2. Shell Programming and Scripting

sed regexp teaser

G'day, Here's a teaser for a sed guru, which I surely am not one, as even my basic sed skills are rusted from years of not practising ... lol Ok ... we have a string of digits such as: 632413741610252847552619172459483022433027602515212950543016701812771409213148672112 we want it split... (9 Replies)
Discussion started by: naderra
9 Replies

3. Shell Programming and Scripting

How to use regexp to find an ipaddress from a query string?

I need help with a regexp to find out the ip address which can possibly be present in a URL. The URLs can be in any of the following form <domain>?a=12345&d=somestring1 <domain>?c=10.10.10.100&d=somestring1 <domain>?a=12345&b=somestring1&c=10.1.2.4d=somestring2... (3 Replies)
Discussion started by: ampak
3 Replies

4. Shell Programming and Scripting

Need help with sed and regexp

Hi everyone, I would really appreciate any help I could get on the following topic. I am not very familiar with reg expressions nor with sed, I just know the basic uses. What I am trying to do is the following: I have a huge text file where I would like to replace all occurnces of a certain... (13 Replies)
Discussion started by: Boxtuna
13 Replies

5. Shell Programming and Scripting

sed with multiple regexp

Dealing with Linux servers script would be in korn or bash shell syntax file is /etc/fstab I want to insert something if regex is matched to all matched lines in the /etc/fstab file and print out entire /etc/fstab file with the changes example 58.228.111.111:/my/file/system... (5 Replies)
Discussion started by: snoman1
5 Replies

6. UNIX for Dummies Questions & Answers

sed before and after regexp

Dear all i have the code which print 1 line of context before and after regexp, with line number sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h the code work well but any one can tell me what each letter mean {=;x;1!p;g;$!N;p;D;} also how i can print 2 line before and onle line after ... (2 Replies)
Discussion started by: soly
2 Replies

7. Shell Programming and Scripting

sed regexp

Hi, I am not that good with reg exp and sed. But I was just looking at something the other day and came across a situation. When I ran the below command: echo "123 word" | sed 's/*/(&)/' the op was: (123) word But when I ran: echo "123 word" | sed 's/*/(&)/g' the o/p was: (123)... (4 Replies)
Discussion started by: King Nothing
4 Replies

8. Shell Programming and Scripting

Regexp and sed problem

Basically it should identify what ever is in between /*< >*/ (tags) and replace dbname ending with (.) with the words in between the tags i.e. DELETE FROM /*<workDB>*/epd_test./*<multi>*//*<version>*/epd_tbl1 ALL; into DELETE FROM... (4 Replies)
Discussion started by: sol_nov
4 Replies

9. Shell Programming and Scripting

sed behavior on hp-ux

the sed command: sed 's/^*//' file does not work on HP-UX :-( but it works fine on Linux, content of file: <tab><tab>hello output should be: hello Any ideas?? Thank you Andy (8 Replies)
Discussion started by: andy2000
8 Replies

10. Shell Programming and Scripting

regexp with sed again!!!

please help: I want to add 1 space between string and numbers: input file: abcd12345 output file: abcd 1234 The following sed command does not work: sed 's/\(+\)\(+\)/\1 \2/' file Any ideas, please Andy (2 Replies)
Discussion started by: andy2000
2 Replies
Login or Register to Ask a Question