Visit Our UNIX and Linux User Community


For loop problem extracting data


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users For loop problem extracting data
# 1  
Old 11-26-2001
For loop problem extracting data

I have a problem with my loops. I have a file called users.dat, it has all the users in it. Then I extracted a list of users sending out number of mails with date from Netscape logs. The extracted list (mailuse.dat) has 3 fields: username, number of mails, date. (One user can show up several times). I would like to add up all the numbers in the 2nd field. Here is my lame effort:
--first loop gets users, second loop tries to get the 2nd field and adds them up.---
Code:
for i in `cat users.dat | awk '{print $2}'
total=0 
do
  for j in `grep $i mailuse.dat | awk '{sum+=$2}'
  do
  total=`expr $total + $j`
  echo $total, $j
  done
done

-----------
TIA, (plese help!)
Nitin Smilie

added code tags for readability --oombera

Last edited by oombera; 02-20-2004 at 12:39 PM..
# 2  
Old 11-26-2001
The users.dat file serves no useful purpose and it is leading you into a double loop. Try this...
Code:
#! /usr/bin/ksh

firsttime=1

sort mailuse.dat | while read user count date ; do
        if ((firsttime)) ; then
                firsttime=0
                olduser=$user
                sum=0
        fi

        if [[ $user != $olduser ]] ; then
                echo $olduser $sum
                olduser=$user
                sum=0
        fi
        ((sum=sum+count))

done

echo $olduser $sum

exit 0

# 3  
Old 11-27-2001
Perderabo,
Thanks a million! Your script is fast, it doesn't grep each name in the user.dat thingy.

I also tried this thing, thought I would just paste it. (I do realize that this is very bad programming and slow too!)

Code:
#!/bin/sh
rm /tmp/mails.log  # remove old logs
for i in `cat walusers.dat | awk '{print $1}'`
do
 total=0;
 echo $i; # shows which users have gone by!!
 for j in `grep $i maildeli.final | awk '{print $2}'`
  do 
  echo $j;
  total=$total+$j;
  done;
 echo $i " " $total >>/tmp/mails.log;
done

After using Perderabo's script, I decided to join the script output with users.dat. That gave me a a list of "power mail users".
-----
join -a 1 -o Nomails -e 1.1 2.2 user.dat mails.log >usage.list
-----
Thanks again! Smilie

added code tags for readability --oombera

Last edited by oombera; 02-20-2004 at 12:39 PM..

Previous Thread | Next Thread
Test Your Knowledge in Computers #691
Difficulty: Medium
UnixWare is a Unix operating system originally released by Univel.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Problem in extracting data using cut/awk command

Hi Everyone, I have a very simple problem and i am stuck in that from last 8 days. I tried many attempts, googled my query but all in vain. I have a text file named "test.txt" In that suppose i have contents like: Java: 1 Object oriented programming language 2 Concepts of Abstraction... (5 Replies)
Discussion started by: Abhijeet Anand
5 Replies

2. Shell Programming and Scripting

extracting data

I have a txt file of the following format >ab_ qwerty >rt_ hfjkil >Ty2 hglashglkasghkf; >P2 aklhfklflkkgfgkfl >ui_ vnllkdskkkffkfkkf >we32 vksksjksj;lslsf'sk's's .... ..... I want to split this big file based on the header (>) (5 Replies)
Discussion started by: Lucky Ali
5 Replies

3. Shell Programming and Scripting

Extracting specific lines of data from a file and related lines of data based on a grep value range?

Hi, I have one file, say file 1, that has data like below where 19900107 is the date, 19900107 12 144 129 0.7380047 19900108 12 168 129 0.3149017 19900109 12 192 129 3.2766666E-02 ... (3 Replies)
Discussion started by: Wynner
3 Replies

4. Shell Programming and Scripting

Problem in getting data from a loop using grep and cut

The script is following : for each_rec in <file_name> do count=`cut -c -2 ${each_rec} | grep "45"` echo ${count} if ] then amount=`cut -c 24-35 ${each_rec}` echo ${amount} else echo "failed" fi done And the file looks like below : ... (4 Replies)
Discussion started by: mady135
4 Replies

5. UNIX for Dummies Questions & Answers

Help with extracting data and plotting

I have attached a txt file, what I would like to be able to do is: 1. Extract Data from Columns labeled E/N and Ko into a new file 2. Then in the new file I would like to be able to plot E/N on the X axis and Ko on the y axis. 3. Lastly I would like to be able to extract multiple data sets and... (6 Replies)
Discussion started by: gingburg
6 Replies

6. UNIX for Dummies Questions & Answers

Extracting Data Using SED

Given the following text in a file named extract.txt: listenPort:=25 smtpDestination:=2 enableSSL:= I am trying to extract only the value 2 following smtpDestination:= Someone had suggested I use: sed -e "s/^smtpDestination:=\(.*\)$/\1/" extract.txt but this returns: listenPort:=25 2 ... (2 Replies)
Discussion started by: cleanden
2 Replies

7. UNIX for Dummies Questions & Answers

extracting and using date from filenames in a loop

HIya, Having a dumb day whilst writing an archive process in Shell want to extract from the filename the date and archive into tar files based on this, I don't want to use mtime as it may not be the actual file date. The files are -rw-rw---- 1 user admin 100 Aug 29 11:10... (2 Replies)
Discussion started by: badg3r
2 Replies

8. Shell Programming and Scripting

Help with foreach loop and extracting a certain string.

Hi there, I would like to have some assistance with 2 problems I have. Well, let's call it 2 challenges. The language to use is Perl. First is a foreach loop (or any other suggestion). I want to have a list of IP addresses and exit when an extracted IP address is not in that list. It is... (6 Replies)
Discussion started by: ejdv
6 Replies

9. Shell Programming and Scripting

Problem in extracting vector data

Hi, Currently I have two files; A and B. File A has below data:- -3 + <1 2 3 4 5 6 7 8 1 2 > - 1] -2 + <8 8 3 4 0 3 7 9 1 3 > - 1] -1 + <3 7 3 4 8 2 7 2 1 2 > - 1] -3 + <2 2 3 4 3 1 7 8 8 2 > - 1] and File B has below data:- <9 1 1 4 2 6 3 8 8 9 > From these two files, I... (2 Replies)
Discussion started by: ahjiefreak
2 Replies

10. Shell Programming and Scripting

Using loop reading a file,retrieving data from data base.

Hi All, I am having trouble through, I am reading the input from tab delimited file containing several records, e.g. line1 field1 field2 field3 so on.. line2 field1 field2 field3 so on.. .. .. on the basis of certain fields for each record in input file, I have to retrieve... (1 Reply)
Discussion started by: Sonu4lov
1 Replies

Featured Tech Videos