Parsing a textfile, sorting and doing math fucntions.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Parsing a textfile, sorting and doing math fucntions.
# 1  
Old 04-27-2004
Parsing a textfile, sorting and doing math fucntions.

whats up all, I am very happy I joined this forum, I have learned alot just going through.

I have a small dilemma... trying to parse a textfile, and sort by 1st feild and add up second feild....

cat textfile.in

1200, 2.50
1200, 1.00
1200, 3.00
1000, 1.00
1000, 2.00
1500, 10.00
1600, 1.00
1600, 2.00

what I need is for this file to look like this...
1200, 6.50
1000, 3.00
1500, 10.00
1600, 3.00


The way I know how to do this involves grep and tmpfiles, takes a long time, and is basically a big mess.... I wanna know if someone knows like a one line apprach do doing this.

for list in `cat textfile.in | awk -F, '{print $1}' | sort | uniq`
do
>$$.tmp
grep $list textfile.in | awk -F, '{print $2}' >> $$.tmp
# Internal utilty sumfeld adds contents of given feild
totalprice=`sumfld $$.tmp 1`
echo "${list},${totalprice}" >> newfile.txt
done

Last edited by djsal; 04-27-2004 at 01:34 PM..
# 2  
Old 04-27-2004
How about an awk script...
Code:
awk -vOFMT=%.2f '{
           if (first == 0) { first=1 ; save=$1 ; tot=0 }
           if (save != $1) { print save, tot ; save=$1 ; tot=0 }
           tot+=$2 }
    END    { print save, tot}'

# 3  
Old 04-27-2004
another way to look at this would be to use perl.

populate a hash 1 element at a time.
for each new line split it up into 2 variables (ie: $column1, $column2) then check the hash for an exhisting key that is equal to $column1.

if you dont have a key already then add $column1 and $column2 as the key value pair.

if it does exhists get the value for that key and add it to $column2.

once your files is done being read your hash will only have uniq keys. and your values will be added together.
# 4  
Old 04-28-2004
Using an array in awk...

awk '{a[$1]+=$2}END{for(i in a)printf "%s %.2f\n",i,a[i]}' textfile.in
# 5  
Old 04-28-2004
Just for Optimus_P, I ran the awk snippet thru ap2, the awk to perl converter.../
Code:
while (<>) {
    ($Fld1,$Fld2) = split(' ', $_, 9999);
    $a{$Fld1} += $Fld2;
}

foreach $i (keys %a) {
    printf "%s %.2f\n", $i, $a{$i};
}

# 6  
Old 04-29-2004
I have a solution which is similar to what perdarabo posted.

sort -n file | awk '$1==prev {sum+=$2;} $1!=prev {if(NR!=1) print prev, sum;sum=$2; prev=$1;} END {print prev, sum}'
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Variablecontent in a Textfile

I want to save a variablecontent in a Textfile. How can i do that? These works only with ls shell_exec("ls > text.txt");Please use code tags, thanks (2 Replies)
Discussion started by: Linuxmann
2 Replies

2. Shell Programming and Scripting

How to separate sorte different characters from one textfile and copy them in a new textfile?

My first post, so don't kill me :) Say i open some textfile with some example like this. on the table are handy, bread and wine Now i know exactly what is in and i want to separate and sorted it in terminal to an existing file with another 2 existing lines in like this: table plane ... (3 Replies)
Discussion started by: schwatter
3 Replies

3. Windows & DOS: Issues & Discussions

Use Textfile for variables ?

So... I have a text file that contains this (hex.txt): #8C7CA6 #6C70A5 #75777C #959A90 #7A7C6C #867DAB #80867E #8A87BD #6B71C6 #8F8A79 #9A9DCE #7E87D0 #69709E #82968C #7C8F81 #A3917B (5 Replies)
Discussion started by: pasc
5 Replies

4. Shell Programming and Scripting

Change value in a textFile

Hi everyone, I need to make a script to take three parameters: -> KEY -> NEW_VALUE -> FILE The FILE is a text plane file. The KEY is a variable to configure, for example: KEY1 = HOLA KEY2= HOLA KEY3=HELLO KEY4 =HOLA And the... (4 Replies)
Discussion started by: Xedrox
4 Replies

5. Shell Programming and Scripting

How to extract more than 1 line in a textfile ?

Hi, I'm starting a little project with a shell script but I'm don't know how to do it. Maybe someone can help me. I have un text file like this : I'd like to do a script who will extract from my file from @ADDLINE1@ to @ADDLINE4@ only and I have no idea how to do this. Any idea ? ... (7 Replies)
Discussion started by: Poulki
7 Replies

6. Shell Programming and Scripting

Textfile lesson

Tag allerseits Ich habe ein umfangreiches Script. Darin möchte ich zu Beginn ein textfile lesen. Den ersten Satz. Dann kommen mehrere Instruktionen und dann soll wieder gelesen werden. Den zweiten Satz. Etc. Ich kann also das herkömmliche while read xyz / do ... done nicht benützen. ... (0 Replies)
Discussion started by: lazybaer
0 Replies

7. Shell Programming and Scripting

Parsing of file for Report Generation (String parsing and splitting)

Hey guys, I have this file generated by me... i want to create some HTML output from it. The problem is that i am really confused about how do I go about reading the file. The file is in the following format: TID1 Name1 ATime=xx AResult=yyy AExpected=yyy BTime=xx BResult=yyy... (8 Replies)
Discussion started by: umar.shaikh
8 Replies

8. Shell Programming and Scripting

Parsing textfile problem with cut

Hi, I have a textfile with several lines like this: text num: USER text (num) num num I need all these stuff. Problem is, how to get these stuff after ":". USER is a username and all chars are possible, even whitespace. So I cant use cut. Any ideas? (3 Replies)
Discussion started by: mcW
3 Replies

9. Shell Programming and Scripting

Finding & Moving Oldest File by Parsing/Sorting Date Info in File Names

I'm trying to write a script that will look in an /exports folder for the oldest export file and move it to a /staging folder. "Oldest" in this case is actually determined by date information embedded in the file names themselves. Also, the script should only move a file from /exports to... (6 Replies)
Discussion started by: nikosey
6 Replies

10. Shell Programming and Scripting

plugging out value from a textfile

Hi, need some help from all of you as i'm a beginner in shellscript. Currently i have a textfile(filename.txt) with the below content: TOTAL: 30 RECORDS: 300 anyone one know how do i plug out the value of 30 and put into a variable(var1) and 300 into another variable(var2)?I'm coding using... (7 Replies)
Discussion started by: snowfrost
7 Replies
Login or Register to Ask a Question