Visit The New, Modern Unix Linux Community


Process a file for line count using for loop in awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Process a file for line count using for loop in awk
# 1  
Process a file for line count using for loop in awk

Hi,

I have a file with contents

Quote:
Name = abc
HPScore = 6.00
HMScore = 7.99
HSScore = 7.73
Pre avg = 2.90
Pre bind ene =1.09
Name = djhf
HPScore = 16.00
HMScore = 17.99
HSScore = 17.73
Pre avg = 21.90
Pre bind ene =111.09
Name = sgs
HPScore = 12.00
HMScore = 43.99
HSScore = 72.73
Pre avg = 25.90
Pre bind ene =14.09
Name = lksf
HPScore = 61.00
HMScore = 34.99
HSScore = 1.73
Pre avg = 34.90
Pre bind ene =12.0
.
.
.
.
So what I have to do is
Quote:
Name = abc HPScore = 6.00 HMScore = 7.99 HSScore = 7.73 Pre avg = 2.90 Pre bind ene =1.09
Name = djhf HPScore = 16.00 HMScore = 17.99 HSScore = 17.73 Pre avg = 21.90 Pre bind ene =111.09
. . . . .
. . . . .
In short, break the file after every 6 lines and then truncate new line to tab for these 6 lines.
I am not able to execute the for loop in awk properly.
The idea is something like this:
less file| awk '{for .... {if ((nr>=1) && (nr<=6)) print $0}}'| tr "\n" "\t"

Can someone help me on this
# 2  
Hi Rossi,

Use below code:

Code:
  
 awk '{A[(NR-1)%6]=A[(NR-1)%6]$0" ";next}END{for(i in A)print A[i]}' fileName

# 3  
Hi Shilpi,

the output from your code is

Quote:
HMScore = 7.99 HMScore = 17.99 HMScore = 43.99 HMScore = 34.99
HSScore = 7.73 HSScore = 17.73 HSScore = 72.73 HSScore = 1.73
Pre avg = 2.90 Pre avg = 21.90 Pre avg = 25.90 Pre avg = 34.90
Pre bind ene =1.09 Pre bind ene =111.09 Pre bind ene =14.09 Pre bind ene =12.0
Name = abc Name = djhf Name = sgs Name = lksf
HPScore = 6.00 HPScore = 16.00 HPScore = 12.00 HPScore = 61.00
I am looking for something else.

But thanks, it might be useful for other problems.
# 4  
Try this:
Code:
awk 'NR % 6 {printf $0 FS; next}1'  file

This User Gave Thanks to Franklin52 For This Post:
# 5  
Code:
$ perl -pe 's/\n/ / unless ($. % 6) == 0' file
Name = abc HPScore = 6.00 HMScore = 7.99 HSScore = 7.73 Pre avg = 2.90 Pre bind ene =1.09
Name = djhf HPScore = 16.00 HMScore = 17.99 HSScore = 17.73 Pre avg = 21.90 Pre bind ene =111.09
Name = sgs HPScore = 12.00 HMScore = 43.99 HSScore = 72.73 Pre avg = 25.90 Pre bind ene =14.09
Name = lksf HPScore = 61.00 HMScore = 34.99 HSScore = 1.73 Pre avg = 34.90 Pre bind ene =12.0

or the reverse
Code:
perl -pe 's/\n/ / if ($. % 6)' file

This User Gave Thanks to Aia For This Post:
# 6  
Thanks Fraklin and Aia,

It works, I will try to understand the logic of doing these tasks in the future.
# 7  
Quote:
Originally Posted by rossi
Thanks Fraklin and Aia,

It works, I will try to understand the logic of doing these tasks in the future.
Code:
awk 'NR % 6 {printf $0 FS; next}1'  file

NR % 6: evaluates if the line number is a multiple of 6. if evaluates as non-zero line must be truncated. 0 skip this action and go to the final action (final 1)
printf $0 FS;: display the current record + a Field Separator (in this case default space)
next: continue to the next record and do not evaluate anything else
1: it can be any non-zero, and makes awk to use the default action of print $0, if you get to this point


Code:
perl -pe 's/\n/ / unless ($. % 6) == 0' file

-pe: print all lines
s/\n/ / unless ($. % 6) == 0: substitute the end of line for space unless that the line number is a multiple of 6

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #682
Difficulty: Easy
Steve Job's was the primary founder and majority shareholder of Pixar
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

For loop in process each file

Hi I have following codecd /tmp/test/ for vfile in `ls -1` do for vlink in `ls -l /tmp/testfile/*|bin/grep "local/init\.d/$vfile$"|bin/awk -F"->" '{print($1)}'|bin/awk -F"/" '{print($NF)}'` I know `ls -1` list only file, but I don't... (3 Replies)
Discussion started by: stew
3 Replies

2. Shell Programming and Scripting

Bash script to read a file from particular line till required line and process

Hi All, Am trying to write wrapper shell/bash script on a utility tool for which i need to pass 2 files as arugment to execute utility tool. Wraper script am trying is to do with above metion 2 files. utility tool accepts : a. userinfo file : which contains username b. item file : which... (2 Replies)
Discussion started by: Optimus81
2 Replies

3. Programming

awk to count occurrence of strings and loop for multiple columns

Hi all, If i would like to process a file input as below: col1 col2 col3 ...col100 1 A C E A ... 3 D E G A 5 T T A A 6 D C A G how can i perform a for loop to count the occurences of letters in each column? (just like uniq -c ) in every column. on top of that, i would also like... (8 Replies)
Discussion started by: iling14
8 Replies

4. Shell Programming and Scripting

Reading line by line from live log file using while loop and considering only those lines start from

Hi, I want to read a live log file line by line and considering those line which start from time stamp; Below code I am using, which read line but throws an exception when comparing line that does not contain error code tail -F /logs/COMMON-ERROR.log | while read myline; do... (2 Replies)
Discussion started by: ketanraut
2 Replies

5. Shell Programming and Scripting

awk to count start and end keyword in a line

Hello fellow awkers and seders: need to figure out a way to ensure a software deployment has completed by checking its trace file in which I can store the deployment results as follows: echo $testvar ===== Summary - Deploy Result - Start ===== ===== Summary - Deploy Result - End =====... (1 Reply)
Discussion started by: ux4me
1 Replies

6. Shell Programming and Scripting

IF awk in a while read line-loop

Hi As a newbe in scripting, i struggle hard with my first script. What i want to do is, bringing data of two files together. file1: .... 05/14/12-04:00:00 41253 4259 5135 5604 5812 5372 05/14/12-04:10:00 53408 5501 6592 7402 7354 6639 05/14/12-04:20:00 58748 6037 7292 8223... (13 Replies)
Discussion started by: IMPe
13 Replies

7. Shell Programming and Scripting

Shell script to read a text file line by line & process it...

Hi , I am trying to write an shell, which reads a text file (from a location) having a list of numbers of strictly 5 digits only ex: 33144 Now my script will check : 1) that each entry is only 5 digits & numeric only, no alphabets, & its not empty. 2)then it executes a shell script called... (8 Replies)
Discussion started by: new_to_shell
8 Replies

8. Shell Programming and Scripting

Read file line by line and process the line to generate another file

Hi, i have file which contains data as below(Only sample shown, it may contain more data similar to the one shown here) i need to read this file line by line and generate an output file like the one below i.e based on N value the number of MSISDNs will vary, if N=1 then the following... (14 Replies)
Discussion started by: aemunathan
14 Replies

9. Shell Programming and Scripting

awk: sort lines by count of a character or string in a line

I want to sort lines by how many times a string occurs in each line (the most times first). I know how to do this in two passes (add a count field in the first pass then sort on it in the second pass). However, can it be done more optimally with a single AWK command? My AWK has improved... (11 Replies)
Discussion started by: Michael Stora
11 Replies

10. Shell Programming and Scripting

Get the line count from 2nd line of the file ?

Hi, I want to get the line count of the file from the 2nd line of the file ? The first line is header so want to skip that. Thanks. (8 Replies)
Discussion started by: smc3
8 Replies

Featured Tech Videos