awk to split field twice using two deliminators


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers awk to split field twice using two deliminators
# 1  
Old 05-07-2019
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[1] if there is no - after it. Lines 1,2,4 are examples. If there is a - after the number in b[1] then the value to the right of it is $3 in the ouput. Thank you Smilie.


Code:
awk '{split($0,a,":"); split(a[2],b,"-");print a[1],b[1],b[2]}' file

file
Code:
chr2:29543663
chr1:21900171
chr5:77524067-77524078
chr5:77425028
chr5:77524110-77524118

current
Code:
chr2 29543663 
chr1 21900171 
chr5 77524067 77524078
chr5 77425028

desired tab-delimeted
Code:
chr2	29543663	29543663
chr1	21900171	21900171
chr5	77524067	77524078
chr5	77425028	77425028
chr5	77524110	77524118

Also tried:
awk

Code:
awk -F: '{
split($0,a,"-");
print (a[1],a[2],a[3]);
}'


Last edited by cmccabe; 05-07-2019 at 12:22 PM.. Reason: added awk
# 2  
Old 05-07-2019
Hi, what about sed?
Code:
sed -r '/-/! s/.*:(.*)/&-\1/;s/[:-]/\t/g' file

--- Post updated at 18:51 ---

Code:
awk -F"[:-]" '{print $1 "\t" $2 "\t" ($3?$3:$2)}' file

--- Post updated at 18:53 ---

Code:
awk -F"[:-]" '$3=$3?$3:$2' OFS='\t' file

These 2 Users Gave Thanks to nezabudka For This Post:
# 3  
Old 05-07-2019
Thank you very much Smilie.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to split file using multiple deliminators

I am trying to use awk to split a input file using multiple delimiters :-|. The input file is just one field and the output is 6 tab-delimited fields. The awk below does run and works as expected until I add the third delimiter |, which gives the current output below. I am not sure what is... (6 Replies)
Discussion started by: cmccabe
6 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 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

5. Shell Programming and Scripting

Awk multiple deliminators

I'm going through a list of files CLINK_0.fits CLINK_1.fits ... CLINK_11.fits and I want to grab the number. Since the number goes from single to double digits, I can't use fix widths. Currently, I'm using an ugly work around of echo $x | awk -F_ '{print $2}' | awk -F. '{print $1}' but I... (1 Reply)
Discussion started by: protargol
1 Replies

6. 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

7. 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

8. Shell Programming and Scripting

awk script to split field data

Hi Experts, I have a Input.txt document which contains data fields seperated by tabs. There are 4 fields totally Named UNIQUE, ORDER, CONTACT and WINS. The UNIQUE field contains unique ID and the CONTACT field contains data seperated by comma in some records. I am looking to write an awk script... (12 Replies)
Discussion started by: forumthreads
12 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
Login or Register to Ask a Question