Visit Our UNIX and Linux User Community


awk script to split field data


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk script to split field data
# 8  
Old 07-23-2009
Code:
$ awk '{n=split($3,arr,",");for(i=0;i++< n;){printf "%s\t%s\n",$1,arr[i];}}/#/' file1
UNIQUE  CONTACT
G001    Swr
G002    B
G002    DR
G002    P
G003    A
G004    PO
G004    A

With FS set to tab..
Code:
$ awk -F '\t' '{n=split($3,arr,",");for(i=0;i++< n;){printf "%s\t%s\n",$1,arr[i];}}/#/' file1
UNIQUE  CONTACT
G001    Swr Pq
G001    SD
G002    B
G002    DR
G002    P
G003    A F
G004    PO
G004    A C

# 9  
Old 07-23-2009
Quote:
Originally Posted by danmero
Previous solutions spinup Smilie
Code:
awk '{n=split($3,arr,",");for(i=0;i++< n;){printf "%s\t%s\n",$1,arr[i];}}/#/' file

Many thanks to help me. I tried this code but it returned the following result

Code:
G001	Pq
G001	sD
G003	F
G004	c

this is not good to me. I need to acheive the following result
Code:
UNIQUE	CONTACT
G001	Swr Pq
G001	SD
G002	B
G002	DR
G002	P
G003	A F
G004	PO
G004	A C

please could you help me to acheive this.

Many Many thanks
# 10  
Old 07-23-2009
Have you tried the solution of Ygor?
# 11  
Old 07-23-2009
Quote:
Originally Posted by Ygor
With FS set to tab..
Right, I check only the original requirement Smilie

Quote:
Originally Posted by forumthreads
I tried this code but it returned the following result
Next time try each solution provided by forum users Smilie
# 12  
Old 07-23-2009
Quote:
Originally Posted by Ygor
Code:
$ awk '{n=split($3,arr,",");for(i=0;i++< n;){printf "%s\t%s\n",$1,arr[i];}}/#/' file1
UNIQUE  CONTACT
G001    Swr
G002    B
G002    DR
G002    P
G003    A
G004    PO
G004    A

With FS set to tab..
Code:
$ awk -F '\t' '{n=split($3,arr,",");for(i=0;i++< n;){printf "%s\t%s\n",$1,arr[i];}}/#/' file1
UNIQUE  CONTACT
G001    Swr Pq
G001    SD
G002    B
G002    DR
G002    P
G003    A F
G004    PO
G004    A C

Ygor,
I tried this code and get the following message, I have typed exactly as shown by you.
awk: syntax error near line 1
awk: bailing out near line 1
Any idea what i am doing wrong

Many Thanks for all your responses.

---------- Post updated at 02:15 PM ---------- Previous update was at 02:13 PM ----------

Quote:
Originally Posted by Franklin52
Have you tried the solution of Ygor?
Franklin,

Yes i did try Ygor solution (with tab) but get syntax error, any idea what could go wrong?

Thanks
# 13  
Old 07-23-2009
Use nawk or /usr/xpg4/bin/awk on Solaris.

Regards

Previous Thread | Next Thread
Test Your Knowledge in Computers #321
Difficulty: Medium
DHCP stands for Dynamic Host Configuration Port.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk to split field twice using two deliminators

In the awk I am splitting on the : into array a, then splitting on the - into element b. I can not seem to duplicate b if there is no - after it. Lines 1,2,4 are examples. If there is a - after the number in b then the value to the right of it is $3 in the ouput. Thank you :). awk... (2 Replies)
Discussion started by: cmccabe
2 Replies

2. Shell Programming and Scripting

awk to add plus or minus to fields and split another field

In the tab-delimited input below I am trying to use awk to -10 from $2 and +10 to $3. Something like awk -F'\t' -v OFS='\t' -v s=10 '{split($4,a,":"); print $1,$2-s,$3+s,a,$5,$6} | awk {split(a,b,"-"); print $1,$2-s,$3+s,b-s,b+s,$5,$6}' input should do that. I also need to -10 from $4... (2 Replies)
Discussion started by: cmccabe
2 Replies

3. Shell Programming and Scripting

awk split after second underscore in field

I am trying to split a tab-delimeted file using awk after the second _ in bold. The awk below is close but splits on the first _, and I am not sure how to use the second _. Thank you :). file chr1 92145889 92149424 NM_001195684_exon_0_10_chr1_92145900_r 0 - chr1 92161218 ... (4 Replies)
Discussion started by: cmccabe
4 Replies

4. Shell Programming and Scripting

AWK script to split data and find average

Input: 2.58359023380340e+02 1.43758864405595e+02 -7.65700666212508e+00 1.06460208083228e+02 1.26185441783936e+02 -3.41389169427027e+01 -1.40393299309592e+02 -3.07758776849508e+01 1.45067703495838e+02 1.79405834959073e+02 5.06666234594205e+01 OUT 2.0105894389e+02 (average of... (8 Replies)
Discussion started by: chrisjorg
8 Replies

5. Shell Programming and Scripting

awk to split one field and print the last two fields within the split part.

Hello; I have a file consists of 4 columns separated by tab. The problem is the third fields. Some of the them are very long but can be split by the vertical bar "|". Also some of them do not contain the string "UniProt", but I could ignore it at this moment, and sort the file afterwards. Here is... (5 Replies)
Discussion started by: yifangt
5 Replies

6. Shell Programming and Scripting

Split File data using awk

HI Guys, I need to split the file in to number of files . file contains FILEHEADER and EOF . I have to split n number of times . I have to form the file with each splitted message between FILEHEADER and EOF using awk beign and end . how to implement please suggest. (2 Replies)
Discussion started by: manish8484
2 Replies

7. Shell Programming and Scripting

Split field with awk

Hi there I have a text file with several fields separated by ";" as follow : 5466-43;5466;JOAN;LIGA;LIGA ESPANOLA;43;DEP LA CORUNA - OSASUNA;10/01/10 17:00 5466-44;5466;CARLES;LIGA;LIGA ESPANOLA;44;MALAGA - ATHL BILBAO;10/01/10 17:00 5466-45;5466;FAB;LIGA;LIGA ESPANOLA;45;REAL MADRID -... (4 Replies)
Discussion started by: capnino
4 Replies

8. Shell Programming and Scripting

simple awk question: split field with :

Hi, Probably a very weak question.. but I have tried all I know.. BPC0001:ANNUL_49542 0.0108 -0.0226 -0.0236 0.0042 0.0033 -0.0545 0.0376 0.0097 -0.0093 -0.032 Control BPC0002:ANNUL_49606 0.0190 -0.0142 -0.0060 -0.0217 -0.0027 ... (3 Replies)
Discussion started by: genehunter
3 Replies

9. Shell Programming and Scripting

can Awk split my field on the .

I am trying to pull data out of a file to execute a series of repetitive commands. One of the fields is a {hex number}.{hex number} pattern. I need the first part of that structure to pass into the command. The file structure is like this: A 2007/10/20 09:50:00 li text ef6da.1 name ... (6 Replies)
Discussion started by: oly_r
6 Replies

10. Shell Programming and Scripting

Split a field in awk script

Hi all, I have a field in the line, let's say argument $6, which is in the format 00.00 If i want to split the field to get rid of the "." in between of the amount, how can i do that i awk script? I have it like this split($6,a,".") but it will get rid of the last 2 digits after the... (4 Replies)
Discussion started by: CamTu
4 Replies

Featured Tech Videos