Insert blank line if grep not found


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Insert blank line if grep not found
# 1  
Old 01-04-2004
Insert blank line if grep not found

Hello everyone... please help if you can -- I'm stumped. Making this work will save me hours of manual labor:

I need to search file2 for pattern in file1. If pattern found append file2 line to file3. If pattern not found append a blank line to file3.

file1 contents example:

123
456
789
101
121

file2 contents example:

123 Joe
456 Man
101 Rob

I need to end up with a file3 that looks like this:

123 Joe
456 Man
<blank line>
101 Rob
<blank line>

I tried this:

grep -f file1 file2 >> file3 || print "\n" >> file3

Can you think of a way that works???
Any help would be GREATLY appreciated!
# 2  
Old 01-04-2004
I also tried...

cat file1 | while read line
do grep $line file2 >> file3

if [ $? -eq 1 ]
then
print "\n" >> file3
fi
done

This still only gives me a file3 of:
123 Joe
456 Man
101 Rob

I need to account for the fact that 789 and 121 of file1 were not found in file2.

Thanks again...
# 3  
Old 01-04-2004
Hmm, curiously this same problem has already been asked and answered once before! See this thread

Also, please see the rules about searching before you post. By the way, is this a homework assignment?
# 4  
Old 01-04-2004
Thanks google but...

I did do extensive searching here to no avail... I found many variations, but none that inserted a blank line if not found. In fact, in reviewing the thread you linked I still don't see the answer. I am a bit sleep deprived since we've been working around the clock to get ready for registration at the college I work for... so I do apologize... but please help just the same. (smile)

This is not homework... I am the acting system administrator (newbie) at a Saint Augustine's College in Raleigh, NC.

I need this file to help the business office compare a list of students who have pre-registered for classes to a list of students who have been awarded financial aid. This way they will know which students have enough aid to pay for classes without manually researching each students account.

Again, thanks again for your reply.

Lorrinda S. Michieka
# 5  
Old 01-04-2004
Re: I also tried...

Quote:
Originally posted by michieka
cat file1 | while read line
do grep $line file2 >> file3

if [ $? -eq 1 ]
then
print "\n" >> file3
fi
done

This still only gives me a file3 of:
123 Joe
456 Man
101 Rob

I need to account for the fact that 789 and 121 of file1 were not found in file2.

Thanks again...
You seem to have a couple of theories about what you want. Your second post seems to solve the problem posed by your first post more or less.

What shell are you using? What system? You should control which shell runs your script with a line like:
#! /usr/bin/ksh
as the first line.

You don't want to print "\n"; just use print. It adds a new line automatically.

That cat process is not doing anything useful. Open the file with exec and then start reading it:
exec < file
while read line

grep will set $? to 1 if there were no matches so you should be ok if you run the script as you posted it...no lines after the grep and before the if.
# 6  
Old 01-04-2004
Problem solved

Taking out the blank line between grep and if did the trick. Thanks so much. I'm using AIX and the korne shell.

Happy New Year... (indeed!)
# 7  
Old 01-05-2004
Well I'm happy if you're happy! Smilie

But a blank line should have been ok. I was worried about a line like, oh,:
echo after grep val = $? > /dev/tty

In this case the echo statement itself would set $? to 0 since the echo worked.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed - How to insert line before the first blank line following a token

Hello. I have a config file (/etc/my_config_file) which may content : # # port for HTTP (descriptions, SOAP, media transfer) traffic port=8200 # network interfaces to serve, comma delimited network_interface=eth0 # set this to the directory you want scanned. # * if have multiple... (6 Replies)
Discussion started by: jcdole
6 Replies

2. Shell Programming and Scripting

Find regex, place on individual lines and insert blank line before

Hello, I have a file that I want to be able to insert a new line before every instance of a regex. I can get it to do this for each line that contains the regex, but not for each instance. Contents of infile: Test this 1... Test this 2... Test this 3... Test this 4... Test this... (2 Replies)
Discussion started by: deneuve01
2 Replies

3. Shell Programming and Scripting

sort with condition and insert blank line

Hi, I have a file with no blank line anywhere Its a conf file, The lines between and starts with "#" should be sort out with the first three characters(characters are between (a-z)). and insert a blank space in between the uniq lines. For clear understanding ,pls find the below input file... (11 Replies)
Discussion started by: anil8103
11 Replies

4. Shell Programming and Scripting

insert blank line between lines

Hello, I am trying to write a script that will count the number of characters for each line in a file and all the lines that have less than 80 characters and that are ending with a period, I want it to insert a blank line after them immediately. But, for whatever reason the condition if ]] is... (3 Replies)
Discussion started by: Pouchie1
3 Replies

5. Shell Programming and Scripting

Insert blank line if grep not found

Hi all, I've googling around forum regarding my prob, the nearest would same as thread tittled Insert blank line if grep not found, but she/he did not mention the solution, so I would like to request your help I've this task, to search in file2 based on pattern in file1 and output it to... (4 Replies)
Discussion started by: masterpiece
4 Replies

6. Shell Programming and Scripting

Print lines after the search string until blank line is found

All I want is to look for the pattern in the file...If I found it at # places... I want print lines after those pattern(line) until I find a blank line. Log EXAMPLE : MT:Exception caught The following Numbers were affected: 1234 2345 2346 Error java.lang.InternalError:... (3 Replies)
Discussion started by: prash184u
3 Replies

7. Shell Programming and Scripting

Insert blank line in a file

I have a file with data as below : Heading 1 ------------- Heading 1 data1 Heading 1 data2 Heading 1 data3 Heading 1 data4 Heading 2 ------------- Heading 2 data1 Heading 2 data2 Heading 2 data3 Heading 2 data4 Heading 3 ------------- Heading 3 data1 Heading 3 data2 Heading 3... (2 Replies)
Discussion started by: yoursdivu
2 Replies

8. Shell Programming and Scripting

compare three files and insert a blank line at each mismatch

i need to compare three files in unix a.txt b.txt c.txt 1 2 1 2 5 3 4 6 5 5 6 6 i need to insert a blank line in the file if i don't find a match and put the items at the same column if found a match The items in the files... (4 Replies)
Discussion started by: mad_man12
4 Replies

9. Shell Programming and Scripting

insert new line at found chars

Hey gang, I have: XXZZXXZZXX 123 asdaffggh dfghyrgr ertyhdhh XXZZXXZZXX 234 sdg XXZZXXZZXX 456 gfg fggfd That is all on one line. Very simply put I want to do is something like: sed s'/XXZZXXZZXX /\n/g' or tr 'XXZZXXZZXX ' '/n' I have tried various things but can never get the desired... (6 Replies)
Discussion started by: crowman
6 Replies

10. Shell Programming and Scripting

insert text and add blank line

I need your help, I want to add a text every 2nd line and also a blank line after 3 line (In the output 2nd line is "changetype: modify" and every 4th line is blank line) Input file format dn: abc orclsourceobjectdn: abcd dn: bcd orclsourceobjectdn: bcda dn: cba orclsourceobjectdn:... (7 Replies)
Discussion started by: athidhi
7 Replies
Login or Register to Ask a Question