Solved

looking for rgrep port for Solaris (from Linux)

Posted on 2000-03-29
15
388 Views
Last Modified: 2013-12-20
I know that Linux offers an rgrep command and want Solaris binaries. I *do* not want an RPM, please, because I don't have all of the dependancies. Nor do I want (yet another) Perl scrip, fine as they are.

The points will only go to someone who has taken the Linux sources to rgrep & recompiled them under Solais. I'd like a single executable (if possible). Sources might be a bonus too.

Anyone out there done it already?
0
Comment
Question by:graham_k
  • 8
  • 7
15 Comments
 
LVL 40

Expert Comment

by:jlevie
ID: 2667568
Is there some reason that you can't use the recursive option of gnu grep? The only time I compared rgrep and "grep -r" it seemed to me that grep was faster. There's a precompiled grep-2.0 in the Solaris 2.5 collection on http://sunfreeware.com/ that will run on 2.5 and later.
0
 
LVL 6

Author Comment

by:graham_k
ID: 2667680
thanks very much for the suggestion. Unfortunately, it didn't work out.

As I said, I can't install packages. So, I D/Led the sources & built. Unfortunately, grep2.0 doesn't support a -r option.

Any other ideas?
0
 
LVL 40

Expert Comment

by:jlevie
ID: 2667710
Oh, If you can build sources go to http://www.gnu.org/order/ftp.html and pick a mirror site close to you and download the latest version (grep-2.4.2). From your question I thought you only could use a binary and I didn't realize that the recursive option isn't in 2.0. That's my mistake, and I apologise for it.
0
Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

 
LVL 6

Author Comment

by:graham_k
ID: 2667916
o.k, I found the source of grep 2.3 and that supports a -r option. I guess that I will use that.

Thanks for trying anayway.
0
 
LVL 6

Author Comment

by:graham_k
ID: 2667920
This question has a deletion request Pending
0
 
LVL 40

Expert Comment

by:jlevie
ID: 2667964
This question no longer is pending deletion
0
 
LVL 40

Expert Comment

by:jlevie
ID: 2667965
2.3 had some bugs and performance problems, you'd be better off with 2.4.2.
0
 
LVL 6

Author Comment

by:graham_k
ID: 2668247
sounds good, do you know where I can lay my hands on the source code?
0
 
LVL 6

Author Comment

by:graham_k
ID: 2668315
o.k, found it (by searching on http://www.gnu.org).

I found v2.4, if you know where the source for v2.4.2 is, let me know.

I'd still quite like the Linux rgrep as that coulour highlights the matched string. If I weren't too lazy, I'd hack this code myself to do it.
0
 
LVL 6

Author Comment

by:graham_k
ID: 2668343
btw, a totally stupid question, but why doesn't

grep ifdef *.c

produce the expected result ? I'm forced to

grep ifdef *

which of course slows it down & greps through binaries, etc.

Am I missing something blindingly obvious?
0
 
LVL 40

Expert Comment

by:jlevie
ID: 2669272
As to 2.4.2, I just went to  http://www.gnu.org/order/ftp.html, from an earlier comment, picked the closest mirror (ftp://ftp.uu.net/archive/systems/gnu/ in my case) and then looked in the grep subdir.

"grep ifdef *.c" certainly should look at all .c files in a directory, it does for me. It's the shell's job to expand the wildcard (*.c), grep just processes each of the file names. What do you see if you got to that dir and do "ls *.c"?
0
 
LVL 6

Author Comment

by:graham_k
ID: 2671708
well, as the only respondant, you're going to get the point anyway.  I don't like to sound like I'm trying to get an extra question answered for free here, but I just can't get the resursive part to work, which is the whole point of the exercise.

When in my source directory
      grep ifdef *.c
works just fine. Making it recusrive
      grep -r ifdef *.c
also works (although it' spointless, since there are no subdirectories). BUT, if I cd .. and issue the same command, I get  "No match.". This has got me stumped. The same result (obviously) when I replace -r with its functional equivelant --directories=recurse.

Am I missing something obvious?
0
 
LVL 40

Accepted Solution

by:
jlevie earned 50 total points
ID: 2671846
While I do love to "get the points", the biggest reason that I participate is to help people solve problems. And, as you correctly pointed out, the whole point of the exercise is to do recursive greps, so it isn't a case of getting a second answer for free in my opionion.

The recursive option for grep takes a directory as the argument, not a file pattern. Thus, "grep -r ulong /usr/include" will search all files in the /usr/include tree. As you've noted about some of the other methods, that isn't exactly efficient as it'll examine all files. A frequently used method of limiting grep to only one class of files is to use find. For example, find some-dir -name "*.c" -exec grep gettimeofday {} \;" will descend into some-dir (which can be . for the current dir), passing each ".c" file encounterd to grep for examination. Not as convient as rgrep, but workable.

This evening I found sources to rgrep. I can't get the site that's supposedly the home to respond (looks like a router problem). But I did find a src rpm that looks to be current. I haven't yet had time to try building it. Since you are on a Solaris box, the src rpm won't be of just a whole lot of use. I don't see a good way to pass it in one of these commnets, but if you'll drop an email to jlevie@bellsouth.net, I'll send you what I've found. BTW, the reason the sources are hard to find is that they are a part of the jed editor, go figure...
0
 
LVL 6

Author Comment

by:graham_k
ID: 2671888
Aha! so "grep -r ifdef ." works. Wonderful!

I've played with various permutations of piping the output of find to grep. About a year ago I went heavilly into research mode on this. There were all sorts of Un*x guru flame wars on UseNet, about starting a new shell for each file found, use of xargs, etc. I can't remember it all. I also didn't fancy remembering & typing in a complex command every time I needed it. Strangely, what works on the command line, does not work from within a shell script. Also, I couldn't figure out how to set up an alias for the command. I did find some useful Perl scripts, but I reckoned that the best way has to be one dedicated binary.


yes, I found those Jed sources too, but couldn't get them to build. I can't remember why. Missing some includes, I think. I'll drop you a mail, in case you have any success.

At least now that you explained that the file parameter becomes a driectory, I _can_ do what I wanted to do. So I will award you the points. No need to stop posting, though :-)

Thanks again.
0
 
LVL 40

Expert Comment

by:jlevie
ID: 2671907
Okay... I'll take a crack at getting it to compile tomorrow.
0

Featured Post

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Every server (virtual or physical) needs a console: and the console can be provided through hardware directly connected, software for remote connections, local connections, through a KVM, etc. This document explains the different types of consol…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question