How can I add 4 lines together and then read the next 4 lines?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How can I add 4 lines together and then read the next 4 lines?
# 1  
Old 11-25-2008
How can I add 4 lines together and then read the next 4 lines?

Hi,

I have grep:ed on a file with which gives the below output.
Total = 43
Total = 21
Total = 23
Total = 2
Total = 3
Total = 1
Total = 0

I would like to add the first 4th lines to a total amount, and do so on for the rest of the lines.

I was thinking in terms of using while read. But it might perhaps not be possible?

grep "Total" file while read kr
do
add the first 4 th lines. Add them to a variable total
Echo "Total $total"
done
# 2  
Old 11-25-2008
Use nawk or /usr/xpg4/bin/awk on Solaris:

Code:
$ print 'Total = 43
Total = 21
Total = 23
Total = 2
Total = 3
Total = 1
Total = 0'|awk '
END{print s}{s+=$NF}
!(NR%4){print s;s=0}
'                   
89
4

Or:

Code:
$ print 'Total = 43
Total = 21
Total = 23
Total = 2
Total = 3
Total = 1
Total = 0'|awk '
END{print s}{s+=$NF}1
!(NR%4){print s;s=0}
'
Total = 43
Total = 21
Total = 23
Total = 2
89
Total = 3
Total = 1
Total = 0
4

# 3  
Old 11-25-2008
Thanks.

If I have a variable containing the same number of lines as the output would give me.

How can I add those two together? I.e

2/22 Total 89
3/11 Total 4
etc...

if I store it in a variable total=
total = grep Total file |awk '
END{print s}{s+=$NF}
!(NR%4){print s;s=0}
'
and I have the
nr=grep dtates file

I want to somehow combine the first row with the first row and
etc.
# 4  
Old 11-25-2008
Please post sample input data (no grep etc.) and an example of the desired output based on that input.
# 5  
Old 11-25-2008
081121_13:43 8606 0.87 SOM.exe
081121_14:43 8606 1.85 SOM.exe
081121_15:43 8606 1.10 SOM.exe

Total = 268
Total = 9392
Total = 2625
Total = 34
Total = 3434
Total = 5667
Total = 322
Total = 333
Total = 1231
Total = 2
Total = 99
Total = 11

I Would like to have the outprint as
081121_13:43 8606 0.87 SOM.exe Total =Sum{268+9392+2625+34}
081121_14:43 8606 1.85 SOM.exe Total =Sum{3434+5667+322+333}
081121_15:43 8606 1.10 SOM.exe Total =Sum{1231+2+99+11}
# 6  
Old 11-25-2008
Code:
awk 'END {
  if (s) 
    printf "%s Total=%d\n", _[++i], s
  }
!/Total/ { 
  _[++c] = $0
  next  
  }  
{ s += $NF }
!(++n % 4) { 
  printf "%s Total=%d\n", _[++i], s
  s = 0
  }' infile

# 7  
Old 11-25-2008
Thanks for your reply.

I donīt get it working though.

If I have an output with grep from one file that gives me
081121_13:43 8606 0.87 SOM.exe
081121_14:43 8606 1.85 SOM.exe
081121_15:43 8606 1.10 SOM.exe

And an output from another with grep

Total = 268
Total = 9392
Total = 2625
Total = 34
Total = 3434
Total = 5667
Total = 322
Total = 333
Total = 1231
Total = 2
Total = 99
Total = 11

How will I get it working with your solution? Because I do not entirely understand it.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Read few last lines of a file

Hi, I have a txt file in below format - START 1 2 3 4 END START 5 6 7 8 END START 9 10 END (8 Replies)
Discussion started by: bhupinder08
8 Replies

2. Shell Programming and Scripting

Extract some lines from one file and add those lines to current file

hi, i have two files. file1.sh echo "unix" echo "linux" file2.sh echo "unix linux forums" now the output i need is $./file2.sh unix linux forums (3 Replies)
Discussion started by: snreddy_gopu
3 Replies

3. Shell Programming and Scripting

search and replace, when found, delete multiple lines, add new set of lines?

hey guys, I tried searching but most 'search and replace' questions are related to one liners. Say I have a file to be replaced that has the following: $ cat testing.txt TESTING AAA BBB CCC DDD EEE FFF GGG HHH ENDTESTING This is the input file: (3 Replies)
Discussion started by: DeuceLee
3 Replies

4. UNIX for Dummies Questions & Answers

When reading a csv file, counter to read 20 lines and wait for minute then read next 20 till end

Hello All, i am a newbie and need some help when reading a csv file in a bourne shell script. I want to read 10 lines, then wait for a minute and then do a reading of another 10 lines and so on in the same way. I want to do this till the end of file. Any inputs are appreciated ... (3 Replies)
Discussion started by: victor.s
3 Replies

5. Shell Programming and Scripting

How to read different lines into column

Dear experts, Need your great help ! The input file is as follows: Name: test01 Name UID: C7:9D:79:52:2A:3F:DF:11:A8:64:00:60:16:36:04:02 Shareable: YES HBA/SP Pairs: HBA UID SP Name SPPort ------- ... (9 Replies)
Discussion started by: tojzz
9 Replies

6. Shell Programming and Scripting

Help!! Need script to read files and add values by lines...

Hi All, I really need your help. I am a begginner in shell script and I believe this is a very simple issue. I have in my directory, n-files, like 1.dhm, 2.dhm, 3.dhm. These files have 1 column with 1 value per line, like: 1.dhm ------ 10 20 30 40 50 2.dhm ------ 30 50 20 (3 Replies)
Discussion started by: dhuertas
3 Replies

7. UNIX for Dummies Questions & Answers

How to count lines - ignoring blank lines and commented lines

What is the command to count lines in a files, but ignore blank lines and commented lines? I have a file with 4 sections in it, and I want each section to be counted, not including the blank lines and comments... and then totalled at the end. Here is an example of what I would like my... (6 Replies)
Discussion started by: kthatch
6 Replies

8. Shell Programming and Scripting

read some lines from file!!!

any idea please!!! I want to pick up all lines of "state" and "desc" from x files: ... # state blah blah blah blah ... .. # desc blah blah blah .... Thx Andy (7 Replies)
Discussion started by: andy2000
7 Replies

9. UNIX for Dummies Questions & Answers

Read lines from file

i have a problem on my bourne shell script. I want to read line by line and then stop when the line does not have letters or is an empty string. But i encounter an error at "while ". The error nessage is "test.sh: test: unknown operator line". Can anyone help me on this thanks :) (2 Replies)
Discussion started by: sagolo
2 Replies

10. UNIX for Dummies Questions & Answers

how to read lines one by one from a file

I have one file in which some commands have written line line i have to read lines from this file(file name passed as avariable) and then i have to execute these commands.. how can i do it? (5 Replies)
Discussion started by: bihani4u
5 Replies
Login or Register to Ask a Question