Loop and grepping into a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Loop and grepping into a file
# 1  
Old 08-26-2002
Question Loop and grepping into a file

I wrote this script for:
1. Get the Web log for today
2. Give me a list of all the IP addresses that have accessed the web server today
3. Remove a list of known IPs listed in a file (line by line)
4. Mail the final file to selected recipients.
I am unable to do part 3. In the script pasted below, I can get only the last IP address from the list removed. It is overwriting the file ipaccess after grepping for each on the known IPs. When I use the >> option it appends to the file. But I want a consolidated list.

Can u gimme some idea how to finish it up?

Srini

#! /bin/sh

IP_LIST=/home/ksrinivas/knownips
SOURCE_DIR=/disk2/MUSTANG/
currentDate=`date +%d"/"%b"/"%Y`

awk ' {print $1" "$4" "$7}' /etc/httpd/logs/access_log | sed /exe/D | grep "$currentDate" > $SOURCE_DIR/access.txt

awk ' {print $1}' $SOURCE_DIR/access.txt > $SOURCE_DIR/ip-add

sort -u $SOURCE_DIR/ip-add > $SOURCE_DIR/ips

cat $IP_LIST | while read IP_ADD
do
grep -v $IP_ADD $SOURCE_DIR/ips >> $SOURCE_DIR/ipaccess
done

uuencode $SOURCE_DIR/ipaccess | mail -s "IPs Accessing mywebserver.com today" ksrinivas
# 2  
Old 08-26-2002
Instead of using a loop and grep -v each line, try this:
Code:
[...]

grep -vf $IP_LIST $SOURCE_DIR/ips > $SOURCE_DIR/ipaccess 

[...]

That does away with the loop altogether...
See man grep for more info on the -f flag.

Last edited by LivinFree; 08-26-2002 at 11:36 PM..
# 3  
Old 08-26-2002
try this...

cat $SOURCE_DIR/ips | while read IP_ADD
do
grep -q $IP_ADD $IP_LIST
if [ $? -ne 0 ]
then
echo $IP_ADD >> thirdfile
fi
done

the file thirdfile should have the all those ips in file "ips" which are not present in file "$IP_LIST"...

I currently don't have UNIX access to test this out... but I think you got the point! Smilie

alternately you could have also used this kind of loop... though it is not anyway better... this doesn't use piping...

for IP_ADD in `cat $SOURCE_DIR/ips`
do
....
done
# 4  
Old 08-26-2002
surely the solution given by LivinFree is the most elegant!!!

it pays of reading the manual for even most "common" commands for their treasury of options....
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh Script, Reading A File, Grepping A File Contents In Another File

So I'm stumped. First... APOLOGIES... my work is offline in an office that has zero internet connectivity, as required by our client. If need be, I could print out my script attempts and retype them here. But on the off chance... here goes. I have a text file (file_source) of terms, each line... (3 Replies)
Discussion started by: Brusimm
3 Replies

2. Shell Programming and Scripting

Grepping text block by block by using for loop

Hei buddies, Need ur help once again. I have a file which has bunch of lines which starts from a fixed pattern and ends with another fixed pattern. I want to make use of these fixed starting and ending patterns to select the bunch, one at a time. The input file is as follows. Hi welcome... (12 Replies)
Discussion started by: anushree.a
12 Replies

3. Shell Programming and Scripting

Display file date after grepping a string in the file

Hi All, I need to recursively grep several folders for a MAC address and display the results with the date of the file name at the start. Even better would be if the final results were displayed chronologically so the newest file is always at the end. Oldest at the top, regardless of what... (8 Replies)
Discussion started by: quemalr
8 Replies

4. Shell Programming and Scripting

Grepping file and returning passed variable if the value does not exist in file at all.

I have a list of fields that I want to check a file for, returning that field if it not found at all in the file. Is there a way to do a grep -lc and return the passed variable too rather then just the count? I am doing some crappy work-around now but I was not sure how to regrep this for :0 so... (3 Replies)
Discussion started by: personalt
3 Replies

5. UNIX for Advanced & Expert Users

Insert a line grepping a file

Hi I have a file name file1.txt & file2.txt which looks like below file1.txt Name=alan Name=math Name=don file2.txt afdsfsdf asdfasdfsd sdfsd dsfas Now I have to grep for all the names and insert a line in file2.txt for each name after line3 as follows file2.txt (2 Replies)
Discussion started by: ammu
2 Replies

6. Shell Programming and Scripting

Grepping string from out file

Guys .. Need to pull this highlighted strings irrespective of line numbers & should be echoed . But these strings are from Outfile from different dir. In which way this can be grepped ?? Need an idea http-timeout 120 seconds persistent-timeout 180 seconds host-rewriting on ... (7 Replies)
Discussion started by: raghunsi
7 Replies

7. Shell Programming and Scripting

Grepping log file

Dear All, I have a log file that is dislpayed as: <msg time='2009-10-14T05:46:42.580+00:00' org_id='oracle' comp_id='tnslsnr' type='UNKNOWN' level='16' host_id='mtdb_a' host_addr='UNKNOWN' version='1'> <txt>14-OCT-2009 05:46:42 *... (19 Replies)
Discussion started by: x-plicit78
19 Replies

8. Shell Programming and Scripting

Grepping Errors in a file

Hey All, I have to grep for an error from a file and get the results of errror in a different file...... But there should be no duplicate entries. Can anyone help me in giving a shell script for this This is file which contains pattern error which I am supposed to grep and put this in a... (4 Replies)
Discussion started by: achararun
4 Replies

9. UNIX for Dummies Questions & Answers

grepping the first 3 characters from a file

give this a try and let me know if it works grep '^' filename rachael (2 Replies)
Discussion started by: rachael
2 Replies

10. UNIX for Dummies Questions & Answers

grepping the first 3 characters from a file

Hi I was wondering if it's possible to use a command to get the first 3 characters of a line in a text file, I tried grep but it returns the whole line but I am only interested in the first 3 characters. Is this possible with grep or I need any other command? Also is it possible deleting from... (2 Replies)
Discussion started by: g-e-n-o
2 Replies
Login or Register to Ask a Question