Rows to columns

 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Rows to columns
# 1  
Old 01-05-2017
Rows to columns

trying to sort an array, only the 4th column is uniq,

have this:
Code:
dog cat bird house1
dog cat bird house2
dog cat bird house3
rose daisy tulip house1
rose daisy tulip house3

would like this:
Code:
dog cat bird house1 house2 house3
rose daisy tulip house1 missing house3

any help would greatly be appreciated

---------- Post updated at 02:45 PM ---------- Previous update was at 02:39 PM ----------

apology is should say columns to rows
# 2  
Old 01-05-2017
Do you think you can adapt this solution from the lower left of this page (under "More UNIX and Linux Forum Topics You Might Find Helpful")?
# 3  
Old 01-05-2017
a bit on a verbose side, but..
awk -f jim.awk myFile where jim.awk is:
Code:
{f4A[$4]; pA[$0]; a[$1 OFS $2 OFS $3]}
END {
  for (i in a) {
    printf("%s", i)
    for (j in f4A)
      printf("%s%s", OFS, ((i OFS j) in pA)? j:"missing")
    printf ORS
  }
}

This User Gave Thanks to vgersh99 For This Post:
# 4  
Old 01-05-2017
Brilliant thank you!
# 5  
Old 01-05-2017
Note that with the script suggested by vgersh99, the order of the rows in the output need not be in the same order as the input lines and the order of the 4th through the last output columns need not be in the same order as their appearance in the input.

For a given version of awk a for loop of the form for(index_variable in array) the order of processing elements in array[] using that for loop will be consistent as long as no elements are added to or removed from array[] between invocations of that loop, but different implementations of awk may produce different random orders for the sequence of index_variable returned while processing the for loop and within a given version of awk different values stored in an array might produce different output orders relative to the order of appearance of those values in the input.

If it is important to keep the order of the columns in the output the same as the order of appearance of different values in the 4th field in the input file, you could try something like:
Code:
awk '
{	if(!($4 in f4A)) {
		f4A[$4]
		of4a[++cf4A] = $4
	}
	pA[$0]
	a[$1 OFS $2 OFS $3]
}
END {	for (i in a) {
		printf("%s", i)
		for(j = 1; j <= cf4A; j++)
			printf("%s%s", OFS, ((i OFS of4a[j]) in pA) ? \
			    of4a[j] : "missing")
		print ""
	}
}' file

which uses the of4a[] array to keep track of the order in which entries were added to the f4a[] array. Another array could be defined to keep track of the input order of the elements of the a[] array if the order of the output rows is important in addition to the order of the output columns.
This User Gave Thanks to Don Cragun For This Post:
# 6  
Old 01-06-2017
That's absolutely on the money, Don!
# 7  
Old 01-09-2017
I am in awe of you both.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Columns to rows

HI UNIX Gurus, Not sure if this was already asked and an UNIX Guru has replied but I could not find what i wanted. I have linux environment and need help on this. I have several files like this. a,1 b,1 utc,10/12/2019 local,10/12/2018 name,xxxy deg,feh 10,12 20,8 30,50 32,64 46,65... (5 Replies)
Discussion started by: Roopensingh
5 Replies

2. Shell Programming and Scripting

Rows to columns

Hi, I have a text file with records as below Service Contract: Account Type: Client Number: Group Number: Account Currency: I want to print 2nd,3rd and 5th as a separate column, like -> Account Type: ,Client Number: ,Account Currency: How can I do that? (1 Reply)
Discussion started by: dsid
1 Replies

3. Shell Programming and Scripting

Compare 2 csv files by columns, then extract certain columns of matcing rows

Hi all, I'm pretty much a newbie to UNIX. I would appreciate any help with UNIX coding on comparing two large csv files (greater than 10 GB in size), and output a file with matching columns. I want to compare file1 and file2 by 'id' and 'chain' columns, then extract exact matching rows'... (5 Replies)
Discussion started by: bkane3
5 Replies

4. Shell Programming and Scripting

Evaluate 2 columns, add sum IF two columns match on two rows

Hi all, I know this sounds suspiciously like a homework course; but, it is not. My goal is to take a file, and match my "ID" column to the "Date" column, if those conditions are true, add the total number of minutes worked and place it in this file, while not printing the original rows that I... (6 Replies)
Discussion started by: mtucker6784
6 Replies

5. Shell Programming and Scripting

Deleting all the fields(columns) from a .csv file if all rows in that columns are blanks

Hi Friends, I have come across some files where some of the columns don not have data. Key, Data1,Data2,Data3,Data4,Data5 A,5,6,,10,, A,3,4,,3,, B,1,,4,5,, B,2,,3,4,, If we see the above data on Data5 column do not have any row got filled. So remove only that column(Here Data5) and... (4 Replies)
Discussion started by: ks_reddy
4 Replies

6. Shell Programming and Scripting

Rows to Columns

Hi Guru's, I have a requirement where i need to convert rows to column based on a key column. Input: Account_id|Trip_Org|Trip_Dest|City|Hotel_Nm 123|DFW|CHI|Dallas|Hyatt 123|LAS|LPA|Vegas|Hyatt Palace Output:... (6 Replies)
Discussion started by: rakesh5300
6 Replies

7. Shell Programming and Scripting

Rows into Columns

Input File vCenter Servers: 172.28.173.207: vCenter Server connectivity status: Accessible ESX servers: Name: nyp-vhst1001-at.hq.nt.life.com IP address: 10.34.36.11 Virtual machines: Name:nyp-bbmds-at Ip address: 172.28.173.139 ... (1 Reply)
Discussion started by: greycells
1 Replies

8. Shell Programming and Scripting

rows to columns

Hi Friends, I have a input file as below. how to convert rows to columns? Friday:recharge 3861140 Monday:recharge 4036228 Saturday:recharge 3996376 Sunday:recharge 3777749 Thursday:recharge 3858537 Tuesday:recharge 4047045 Wednesday:recharge 3954798 desinred output Sunday ... (3 Replies)
Discussion started by: suresh3566
3 Replies

9. Shell Programming and Scripting

Rows into columns?

I have a file thats space delimited that looks something like this: Joe Smith jsmith 43234 bill1;bill2;read;read2;schedule Andy Summers asummers 11232 bill1;read Beth McConnel bmconnel 43443 read;read2;schedule;bill Susan Fowler sfowler 09332 bill1;read;schedule I need to... (8 Replies)
Discussion started by: regexnub
8 Replies

10. Shell Programming and Scripting

# of rows and columns

Hi, Does anyone know the command to know the # of rows and columns for a file? thanks (3 Replies)
Discussion started by: kylle345
3 Replies
Login or Register to Ask a Question