grep command-HELP?!


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers grep command-HELP?!
# 1  
Old 11-14-2003
grep command-HELP?!

Hello all
I am having trouble with the grep command. I want to find the word "blue" - ( the word blue in a sentence in the file) in numerous files and directories. I have tried every combo to get there. Can anyone help?
I am not going to try to pretend this isn't a homeowrk question.. but believe me I have spent a lot of time trying this to no avail
Rob
# 2  
Old 11-14-2003
Hi,

The "normal" unix grep has no way to do recursive search, you can, for example, use a pipe with find and xargs, like this:

find where_to_find | xargs grep what_to_look
# 3  
Old 11-15-2003
Hey Rob,

Using find is probably your best bet. If you are wanting to parse all files in a directory called somedir, you can:

$ find /path/to/somedir -type f -exec grep blue {} \;

Find is an extremely useful command, you can specify multiple files, access time, modification time etc. etc. The man page is worth a read. The -exec executes the next command and places the argument (in this case the file it found) to the right of the {}. Using exec rather than xargs keeps you to fewer sys calls.

Hope this helps.

Cheers,
Keith

Last edited by kduffin; 11-17-2003 at 10:29 PM..
# 4  
Old 11-17-2003
kduffin,

Using -exec will start a grep program for each file it founds, while xargs will be less resources consuming. You can end with hundreds of "grep"s running.
# 5  
Old 11-17-2003
I still don't think it's more expensive. The grep processes won't stack either, so you'll not see hundreds in your proc table. Just as a quick example under a solaris dir with 4 files, using truss to watch the lib calls etc.:

$ truss find . -type f 2>&1 | xargs grep ls 2>&1 | wc -l
378
$ truss find . -type f -exec grep ls {} \; 2>&1 | wc -l
49

The xargs still seems to be the more expensive choice.

Cheers,
Keith

Last edited by kduffin; 11-17-2003 at 10:29 PM..
# 6  
Old 11-17-2003
One thing that the xargs example does do better is that it will show the filenames where as the exec won't. You'd have to have a wrapper that echo's the filename and does a grep for the exec to work effectively.

$ find . -type f | xargs grep ls
./ick1:ls
./ick2:ls
./ick3:ls
$ find . -type f -exec grep ls {} \;
ls
ls
ls
$

Cheers,
Keith

Last edited by kduffin; 11-17-2003 at 10:30 PM..
# 7  
Old 11-17-2003
Quote:
Originally posted by kduffin
I still don't think it's more expensive. The grep processes won't stack either, so you'll not see hundreds in your proc table. Just as a quick example under a solaris dir with 4 files, using truss to watch the lib calls etc.:

$ truss find . -type f 2>&1 | xargs grep ls 2>&1 | wc -l
378
$ truss find . -type f -exec grep ls {} \; 2>&1 | wc -l
49

The xargs still seems to be the more expensive choice.

Cheers,
Keith
keith@duffin.org
http://www.duffin.org
truss is terrible tool for performance analysis. Try this as a non-root user:
cd /usr/bin
time find . -print | xargs grep "bogusstring" > /dev/null
time find . -exec grep "bogusstring" {} \; > /dev/null

Because the commands are running as non-root and we did not redirect stderr you will see a few error messages. Notice the difference in the speed at which are displayed. And then compare the numbers. By using xargs, you prevented hundreds of fork() and hundreds of exec() system calls. Neither system call is cheap.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Help on grep command

for example i have a directory home/solaris/unix/samplefiles/ with defaults files in it.. those default files have 1 word in common "UNIX". how can i list the files without "UNIX" words in it using grep command thanks, im using unix solaris, korn shell.. (1 Reply)
Discussion started by: daveaztig14
1 Replies

2. Shell Programming and Scripting

Grep command giving different result for different users for same command

Hello, I am running below command as root user #nodetool cfstats tests | grep "Memtable switch count" Memtable switch count: 12 Where as when I try to run same command as another user it gives different result. #su -l zabbix -s /bin/bash -c "nodetool cfstats tests | grep "Memtable switch... (10 Replies)
Discussion started by: Pushpraj
10 Replies

3. Shell Programming and Scripting

Grep command

grep -i -f panel_genes.txt hg19_refGene.txt > match.txt seems to be pulling names the do not exist in the input file (panel_genes.txt) - the output is attached as well (match.txt) For example, RNF185 or ZNF146 are not genes in the input. I am trying to match the input file genes only and am... (9 Replies)
Discussion started by: cmccabe
9 Replies

4. Shell Programming and Scripting

help on grep command...

Hi I have lots of file in on folder and i want to egrep from only few files. List of files...... Polt_KJ_430_OutputRBS_istUt_CR2.log Polt_KN_4122_OutputRBS_ncChk_CR.log Polt_LN_2230_OutputRNC_Hth_CLKLKL.log Solt_KJ_430_OutputRBS_istUt_CR2.log Solt_KN_4122_OutputRBS_ncChk_CR3.log... (2 Replies)
Discussion started by: asavaliya
2 Replies

5. Shell Programming and Scripting

Grep Command

Hi, I have around 500 Text files and Each file will be having either String1 or String2. I want to list the file only which has String1 and Sting2 in a single command.. (5 Replies)
Discussion started by: balasubramani04
5 Replies

6. Shell Programming and Scripting

Help with using grep command with copy command

Hi, im taking an entry Unix class, and as part of my lab assignment I have to copy all files in the /home/david/lab3 directory that have the file extension .save to your lab3/temp directory. I'm having trouble getting the grep to do anything worth while I've been trying to do: cp... (6 Replies)
Discussion started by: Critical jeff
6 Replies

7. Shell Programming and Scripting

can anyone help with shell script command about searching word with grep command?

i want to search in the current directory all the files that contain one word for example "hello" i want to achieve it with the grep command but not with the grep * (2 Replies)
Discussion started by: aintour
2 Replies

8. UNIX for Advanced & Expert Users

how to exclude the GREP command from GREP

I am doing "ps -f" to see my process. but I get lines that one of it represents the ps command itself. I want to grep it out using -v flag, but than I get another process that belongs to the GREP itself : I would like to exclude # ps -f UID PID PPID C STIME TTY TIME CMD... (2 Replies)
Discussion started by: yamsin789
2 Replies

9. UNIX for Dummies Questions & Answers

grep command

hi all i have directory /usr under this directory i have subdirectories tmp1,tmp2,tmp3 like this /usr/tmp1 /usr/tmp2 /usr/tmp3 and so on i want to search string in files (i don't know the name of the files)and i want to serch it in all the directories under the /usr how shell i do... (3 Replies)
Discussion started by: naamas03
3 Replies

10. Shell Programming and Scripting

grep command

What is the meaning of this grep -v $object grant_BU.sql>temp (1 Reply)
Discussion started by: debasis.mishra
1 Replies
Login or Register to Ask a Question