Visit Our UNIX and Linux User Community


Help with grep output


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Help with grep output
# 1  
Old 09-22-2009
Help with grep output

Hello,

I have a list of stings that I'm using with grep to determine which files contain the strings. Here's what I have now:

list of strings in a file (list.txt):
/directory/direc tory/file.jsp
/dire ctory/directory/direct ory/file.jsp

grep I'm doing to find files that contain the strings:

for h in "`cat list.txt`" ; do echo "$h" ; grep -rl "$h" /directory/path/of/files/to/search/* ; done >> results.txt

The output is not quite what I'm looking for. I was hoping that putting the echo before the grep would give me a result like this:

string 1
all files containing string 1

string 2
all files containing string 2


What I'm getting instead is this:

string 1
string 2
string 3
all files containing string 1
all files containing string 2
all files containing string 3

Thanks in advance.
# 2  
Old 09-22-2009
try moving the appends inside the loop:

Code:
out=results.txt;for h in "`cat list.txt`" ; do echo "$h" >>$out; grep -rl "$h" /directory/path/of/files/to/search/* >>$out; done

# 3  
Old 09-22-2009
Thanks for the suggestion Varontron. I tried it but it's not producing the output I need. Here's what I'm getting now:

all files containing string 1
all files containing string 2
all files containing string 3
string 1
string 2
string 3
all files containing string 1
all files containing string 2
all files containing string 3
# 4  
Old 09-22-2009
Problem: Your script reads the whole file in single shot.

Solution 1: Set IFS to newline.

Solution 2:
Code:
while read h
do 
    echo "$h";
    grep -rl "$h" /filesdir/*;
done < list.txt

The above should give you the expected output.
# 5  
Old 09-23-2009
Thanks Thegeek - that's what I needed.
 

Previous Thread | Next Thread
Test Your Knowledge in Computers #279
Difficulty: Easy
A microkernel is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms include low-level address space management, thread management, and inter-process communication (IPC).
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grep output

Hi. I have a command line that will generate exif data from .jpg files... So to get the Camera Model I use: find -iname "*.jpg" -print0 | xargs -0 exiftool -a | grep "Camera Model" But I want the file name AND the camera model... How to I get the grep to give me TWO bits of information from... (2 Replies)
Discussion started by: TuftyDave
2 Replies

2. UNIX for Dummies Questions & Answers

How to have the output in grep?

Hi guys - I am trying to have a certain file display information horizontally divided by a pipe. for example file name: foo.dat has information like this: name1 name2 name3 namenamename4 namene5 I would like it to display like this: name1|name2|name3|namenamename4|namene5 ... (6 Replies)
Discussion started by: DallasT
6 Replies

3. Shell Programming and Scripting

How to grep the desired output and output to a file?

currently I have process from a raw file to this stage ALTER TABLE "EXCEL_ADMIN"."TC_TXN_VOID" ADD CONSTRAINT "PK_TC_TXN_VOID" PRIMARY KEY ("TC_TXN_IID") ALTER TABLE "EXCEL_ADMIN"."TC_TXN_AMT" ADD CONSTRAINT "PK_TC_TXN_AMT" PRIMARY KEY ("TC_TXN_AMT_IID") ALTER TABLE... (10 Replies)
Discussion started by: jediwannabe
10 Replies

4. UNIX for Dummies Questions & Answers

Grep output problem

Hi all, Here is my problem: I'm testing a login script for our mac Machines. This script output's in a csv file. The login script looks like this: echo "${computername}|${data1}|${data2}|${data3}" >> file.csv The csv file looks like this: Computername1|data1|data2|data3... (4 Replies)
Discussion started by: mattiasvdm
4 Replies

5. Shell Programming and Scripting

grep output

hi i am running grep -c on a bunch of files some of which may be non existent. The output i get is in the same order as the files grep checks and this is what i want as i need to copy the output to a spreadsheet. However when i tried to pipe the output to sed to strip away the filenames and just... (5 Replies)
Discussion started by: chronics
5 Replies

6. Shell Programming and Scripting

grep output

From below mentioned line,i have to display output as last word only ie:arch_1_105366_720809746.dbf -rw-r----- 1 oracle dba 98887680 02 Mar 12:01 arch_1_105366_720809746.dbf Please .. (5 Replies)
Discussion started by: Sanal
5 Replies

7. Shell Programming and Scripting

GREP with contain output

How can I perform a grep and it will give me a contain word (maintenance) instead of a string or the whole line of info. grep with exclusive output? or is there a CONTAIN with IF statement ? I have a file call yast2_vhost.conf and it contain multiple entries call maintenance.html... (2 Replies)
Discussion started by: yoom@hostwebase
2 Replies

8. UNIX for Dummies Questions & Answers

recursive grep output

I'm using this command to get a recursive grep find . -name *.i -exec grep 'blah blah' {} \; -exec ls {} \; now I would like to obtain just the list of the files and not also the line of the file. How should I change the syntax? thank you, (5 Replies)
Discussion started by: f_o_555
5 Replies

9. Shell Programming and Scripting

output of grep

hi, why the following is giving entire /etc/passwd file as output even when it does not contain ^ or $ . grep ' ' /etc/passwd whereas the following is not giving any output grep ' ^$ ' /etc/passwd (3 Replies)
Discussion started by: useless79
3 Replies

10. UNIX for Dummies Questions & Answers

Strange output from grep

Hi, I am getting different output for grep depending which directory I am in. The following is a transcript of my session, I am using egrep but have also used grep -E. The directory names have been changed for security: $pwd /dir1/dir2/dir3/dir4 $echo 000000 |egrep -v $echo $? 1 $cd ..... (10 Replies)
Discussion started by: Bab00shka
10 Replies

Featured Tech Videos