awk to transpose every 7 rows into columns


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk to transpose every 7 rows into columns
# 1  
Old 01-08-2014
awk to transpose every 7 rows into columns

input:

Code:
a1
a2
a3
a4
a5
a6
a7
b1
b2
b3
..
b7
..
z1
..
z7

Desired Output:
Code:
a1 a2 a3 a4 a5 a6 a7
b1 b2 b3 ............ b7
...
z1 ..................... z7

In need of help from Gurus to transpose every 7 rows into column fields. Thanking you in advance.
# 2  
Old 01-08-2014
Code:
awk 'ORS=NR%7?FS:RS' infile

This User Gave Thanks to radoulov For This Post:
# 3  
Old 01-08-2014
works perfectly.. Smilie

i tried this but no luck:
Code:
awk 'NR==7{a=$1;next}{a=a$1" "}END{print a}'

# 4  
Old 01-08-2014
Hm ..., it should be something like this:
Code:
awk '{
  r = length(r) ? r OFS $0 : $0 
  }  
!(NR % 7) {
  print r
  r = x
  }' infile

This User Gave Thanks to radoulov For This Post:
# 5  
Old 01-08-2014
Your 1-liner works perfectly!
Code:
awk 'ORS=NR%7?FS:RS' infile

I was simply trying to understand how the NR thingy works.. Thanks again!
# 6  
Old 01-08-2014
I've understood, the second one just somehow follows your style.
# 7  
Old 01-08-2014
Quote:
Originally Posted by ux4me
Your 1-liner works perfectly!
Code:
awk 'ORS=NR%7?FS:RS' infile

I was simply trying to understand how the NR thingy works.. Thanks again!
Consider the following:
Code:
zsh-5.0.0[t]% cat infile 
a1
a2
a3
a4
a5
a6
a7
b1
b2
b3
b4
b5
b6
b7
z1
z2
z3
z4
z5
z6
z7

Code:
zsh-5.0.0[t]% awk '{ 
  printf "NR is %d, NR % 7 returns %d <--%s\n", 
    NR, NR % 7, NR % 7 ? " true" : "-- false" 
    }' infile
NR is 1, NR % 7 returns 1 <-- true
NR is 2, NR % 7 returns 2 <-- true
NR is 3, NR % 7 returns 3 <-- true
NR is 4, NR % 7 returns 4 <-- true
NR is 5, NR % 7 returns 5 <-- true
NR is 6, NR % 7 returns 6 <-- true
NR is 7, NR % 7 returns 0 <---- false
NR is 8, NR % 7 returns 1 <-- true
NR is 9, NR % 7 returns 2 <-- true
NR is 10, NR % 7 returns 3 <-- true
NR is 11, NR % 7 returns 4 <-- true
NR is 12, NR % 7 returns 5 <-- true
NR is 13, NR % 7 returns 6 <-- true
NR is 14, NR % 7 returns 0 <---- false
NR is 15, NR % 7 returns 1 <-- true
NR is 16, NR % 7 returns 2 <-- true
NR is 17, NR % 7 returns 3 <-- true
NR is 18, NR % 7 returns 4 <-- true
NR is 19, NR % 7 returns 5 <-- true
NR is 20, NR % 7 returns 6 <-- true
NR is 21, NR % 7 returns 0 <---- false

NR is the number of the current record.
So we manipulate the builtin variable ORS (the Output Record Separator).
When the expression returns 0, false, we set it to the default value of RS (input Record Separator): a newline,
otherwise, we set it to the current (in this case, the default) value
of FS (Field Separator) - a single space.

Last edited by radoulov; 01-08-2014 at 06:33 PM..
This User Gave Thanks to radoulov For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Transpose rows to certain columns

Hello, I have the following data and I want to use awk to transpose each value to a certain column , so in case the value is not available the column should be empty. Example: Box Name: BoxA Weight: 1 Length :2 Depth :3 Color: red Box Name: BoxB Weight: 3 Length :4 Color: Yellow... (5 Replies)
Discussion started by: rahman.ahmed
5 Replies

2. Shell Programming and Scripting

Transpose rows to columns complex

Input: IN,A,1 IN,B,3 IN,B,2 IN,C,7 BR,A,1 BR,A,5 BR,C,9 AR,C,9 Output: CNTRY,A,B,C IN,1,5,7 BR,6,0,9 AR,0,0,9 (7 Replies)
Discussion started by: unme
7 Replies

3. Shell Programming and Scripting

Columns to Rows - Transpose - Special Condition

Hi Friends, Hope all is well. I have an input file like this a gene1 10 b gene1 2 c gene2 20 c gene3 10 d gene4 5 e gene5 6 Steps to reach output. 1. Print unique values of column1 as column of the matrix, which will be a b c (5 Replies)
Discussion started by: jacobs.smith
5 Replies

4. Shell Programming and Scripting

Transpose Data from Columns to rows

Hello. very new to shell scripting and would like to know if anyone could help me. I have data thats being pulled into a txt file and currently have to manually transpose the data which is taking a long time to do. here is what the data looks like. Server1 -- Date -- Other -- value... (7 Replies)
Discussion started by: Mikes88
7 Replies

5. Shell Programming and Scripting

transpose rows to columns

Any tips on how I can awk the input data to display the desired output per below? Thanking you in advance. input test data: 2 2010-02-16 10:00:00 111111111111 bytes 99999999999 bytes 90% 4 2010-02-16 12:00:00 333333333333 bytes 77777777777 bytes 88% 5 2010-02-16 11:00:00... (4 Replies)
Discussion started by: ux4me
4 Replies

6. Shell Programming and Scripting

Transpose columns to Rows

I have a data A 1 B 2 C 3 D 4 E 5 i would like to change the data A B C D E 1 2 3 4 5 Pls suggest how we can do it in UNIX. Start using code tags, thanks. Also start reading your PM's you get from Mods as well read the Forum Rules. That might not do any harm. (24 Replies)
Discussion started by: aravindj80
24 Replies

7. Shell Programming and Scripting

Transpose Rows Into Columns

I'm aware there are a lot of resources dedicated to the question of transposing rows and columns, but I'm a total newbie at this and the task appears to be beyond me. I have 40 text files with content that looks like this: Dokument 1 von 146 Orange County Register (California) June 26, 2010... (2 Replies)
Discussion started by: spindoctor
2 Replies

8. Shell Programming and Scripting

Transpose columns to Rows : Big data

Hi, I did read a few posts on the subjects, tried out a few solutions, but did not solve my problem. https://www.unix.com/302121568-post11.html https://www.unix.com/shell-programming-scripting/137953-large-file-columns-into-rows-etc-4.html Please help. Problem very similar to the second link... (15 Replies)
Discussion started by: genehunter
15 Replies

9. Shell Programming and Scripting

Transpose multipe columns to rows and adding headers

Hi, I found the following awk script to transpose multiple (3) columns to multiple rows: #=== BEGIN {FS=","} { for (i=1;i<=NF;i++) { arr=$i; if(nf<= NF) nf=NF; } nr=NR } END { for(i=1;i<=nf;i++) { (8 Replies)
Discussion started by: Gery
8 Replies

10. Shell Programming and Scripting

Rows to Columns - File Transpose

Hi I have an input file and I want to transpose it but I need to take care that if any field is missing for a record it should be popoulated with space for that field - using a shell script INFILE ---------- emp=1 sal=2 loc=abc emp=2 sal=21 sal=22 loc=xyz emp=5 loc=abc OUTFILE... (10 Replies)
Discussion started by: 46019
10 Replies
Login or Register to Ask a Question