Michael O'Keefe wrote:
Gus Wirth wrote:
I have a bunch of lines similar to the following generated from an rpm spec file using grep:

%{_libdir}/wine/odbc32.dll.so

I want to trim off the front part %{_libdir}/wine/ and the back part .dll.so leaving only the base name of the file. All the lines have exactly the same front and back parts so I can do an exact match. I'm trying to figure out if I can do the removal in one shot or if I need two passes to do this, but right now about the only thing I know about sed is that it exists and is used for stuff like this. Trying to use GNU info pages is a recipe for headaches. Is there a simple reference for sed anywhere other than the O'Reilly sed & awk book? Or, since this is a one-off project, can someone give me some hints?

s/^.*\/\(.*\)\.dll\.so$/\1/
GNU sed version 4.1.5

Thanks! That works great. Dissecting this expression, it seems that the first portion ^.*\/ does a match on everything from the beginning of the line to the last last /, then the expression in parenthesis (.*) matches whatever is left except for the end piece which is the \.dll\.so$ The \1 returns the chunk that is in the parenthesis.

Am I reading that correctly? Turns out my book Mastering Regular Expressions has the info I need. It was sitting in the other bookcase so it didn't immediately come to mind.

Gus


--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list

Reply via email to