Visit Our UNIX and Linux User Community


Convert rows to columns based on condition


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Convert rows to columns based on condition
# 1  
Old 08-15-2013
Convert rows to columns based on condition

I have a file some thing like this:
Code:
GN   Name=YWHAB;
RC   TISSUE=Keratinocyte;
RC   TISSUE=Thymus;
CC   -!- FUNCTION: Adapter protein implicated in the regulation of a large
CC       spectrum of both general and specialized signaling pathways
GN   Name=YWHAE;
RC   TISSUE=Liver;
RC   TISSUE=Brain;
RC   TISSUE=Heart;
CC   -!- FUNCTION: Adapter protein implicated in the regulation of a large
CC       spectrum of both general and specialized signaling pathways. Binds
CC       to a large number of partners, usually by recognition of a
CC       phosphoserine or phosphothreonine motif. Binding generally results
CC       in the modulation of the activity of the binding partner.

I want to keep the information related to each entry column wise. each entry starts with GN (gene name) and ends with Function

Code:
GN	TISSUE	                 FUNCTION		
YWHAB	Keratinocyte;Thymus	Adapter protein implicated in the regulation of a large spectrum of both general and specialized signaling pathways
YWHAE	Liver;Brain;Heart;	Adapter protein implicated in the regulation of a large spectrum of both general and specialized signaling pathways. Binds to a large number of partners, usually by recognition of a phosphoserine or phosphothreonine motif. Binding generally results in the modulation of the activity of the binding partner.

# 2  
Old 08-15-2013
One way to do it:
Code:
awk '
BEGIN {
	printf "%-8s %-22s %s\n","GN","TISSUE","FUNCTION"
	}
	/^GN/ {
		split($0,a,"[=;]")
		g=a[2]
		GN[g]=1
		}
	/^RC/ {
		split($0,a,"=")
		RC[g]=RC[g] a[2]}
	/^CC/ {
		sub(/-!- FUNCTION:/,x)
		split($0,a,"  +")
		CC[g]=CC[g] a[2]
		}
END {
	for (i in GN) 
		printf "%-8s %-22s %s\n",i,RC[i],CC[i] 
}' file

GN       TISSUE                 FUNCTION
YWHAB    Keratinocyte;Thymus;   Adapter protein implicated in the regulation of a largespectrum of both general and specialized signaling pathways
YWHAE    Liver;Brain;Heart;     Adapter protein implicated in the regulation of a largespectrum of both general and specialized signaling pathways. Bindsto a large number of partners, usually by recognition of aphosphoserine or phosphothreonine motif. Binding generally resultsin the modulation of the activity of the binding partner.

# 3  
Old 08-15-2013
Hi
Thank you but one thing, when i apply
Code:
cut -f1 output_file

which is supposed to give the gene names (GN) alone is printing entire content which means it is not delimited
# 4  
Old 08-15-2013
Code:
awk '{print $1}' output_file
GN
YWHAB
YWHAE

If you only need GN names, no need for all the above, just do:
Code:
awk -F"[=;]" '/^GN/ {print $2}' orgfile
YWHAB
YWHAE

This User Gave Thanks to Jotne For This Post:
# 5  
Old 08-15-2013
I need all the three fields separated by tab but when i am applying for my huge data somehow it is mixing everything so i thought i would copy each column separately into new file
# 6  
Old 08-15-2013
Can you post some of or the complete file?
# 7  
Old 08-15-2013
I have attached the file and sent. It seems that requires moderators permission so soon i think it will be approved and you can see to it

Previous Thread | Next Thread
Test Your Knowledge in Computers #958
Difficulty: Hard
Metamorphism protects a virus against heuristic analysis.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert rows to columns based on key and count

Team, I am having requirement to convert rows to columns Input is: key ,count, id1, pulse1, id2, pulse2 ,id3, pulse3 12, 2 , 14 , 56 , 15, 65 13, 3, 12, 32, 14, 23, 18, 54 22, 1 , 32, 42 Expected Out put: key, id,pulse 12, 14, 56 12, 15, 65 13 ,12, 32 13, 14 ,23 13, 18 ,54 22 ,32,... (3 Replies)
Discussion started by: syam1406
3 Replies

2. Shell Programming and Scripting

Convert rows to columns

hi folks, I have a sample data like what is shown below: 1,ID=1000 1,Org=CedarparkHospital 1,cn=john 1,sn=doe 1,uid=User001 2,uid=User002 2,ID=2000 2,cn=steve 2,sn=jobs 2,Org=Providence I would like to convert it into the below format: 1,1000,CedarparkHospital,john,doe,User001... (11 Replies)
Discussion started by: vskr72
11 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

Convert rows to columns

I am looking to print the data in columns and after every 3 words it should be a new row. cat example.out | awk 'END { for (i = 0; ++i < m;) print _;print _ }{ _ = _ x ? _ OFS $1 : $1}' m=1| grep -i INNER I am looking to print in a new line after every 3 words. ... (2 Replies)
Discussion started by: lazydev
2 Replies

5. Shell Programming and Scripting

Extracting rows and columns in a matrix based on condition

Hi I have a matrix with n rows and m columns like below example. i want to extract all the pairs with values <200. Input A B C D A 100 206 51 300 B 206 100 72 48 C 351 22 100 198 D 13 989 150 100 Output format A,A:200 A,C:51 B,B:100... (2 Replies)
Discussion started by: anurupa777
2 Replies

6. Shell Programming and Scripting

How to Convert rows in to columns?

Hi Gurus, How to convert rows in to columns using linux shell scripting Input is like (sample.txt) ABC DEF GHI JKL MNO PQR STU VWX YZA BCD output should be (sampleoutput.csv) ABC,DEF,GHI,JKL,MNO PQR,STU,VWX,YZA,BCD (2 Replies)
Discussion started by: infasriniit
2 Replies

7. Shell Programming and Scripting

Convert few columns to rows

Hi! Does anybody help me in converting following data: INPUT looks like this: 20. 100. 30 200. 40. 400. 50. 100. 60. 200. 70. 400. 80. 200. 150. 210. 30. 100. OUTPUT should look like this: 20. 100. 30 200. 40. 400. 50. 100. 60. 200. 70.... (5 Replies)
Discussion started by: lovelinux
5 Replies

8. Shell Programming and Scripting

convert rows to columns

hi, i have the file as below: abc def ghi jkl i want the output as abc,def,ghi,jki please reply, Thanks (4 Replies)
Discussion started by: namitai
4 Replies

9. Shell Programming and Scripting

convert columns into rows

hi, Apologies if this has been covered. I have requirement where i have to convert a single column into multiple column. My data will be like this - 2 3 4 5 6 Output required - 2 3 4 5 6 (1 Reply)
Discussion started by: Nishithinfy
1 Replies

10. Shell Programming and Scripting

how to convert columns to rows

Hi, I need a shell script for below requirement Input file P1 - 173310 P2 - 173476 P3 - 173230 P4 - 172737 P1 - 173546 P2 - 173765 P3 - 173876 P4 - 172989 Out put file P1 173310 173546 P2 173476 173765 P3 173230 173876 P4 172737 172989 Suresh (6 Replies)
Discussion started by: suresh3566
6 Replies

Featured Tech Videos