awk to reformat text file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk to reformat text file
# 1  
Old 05-17-2016
awk to reformat text file

Howdy. AWK beginner here. I need to reformat a text file in the following format:

Code:
TTGS08-2014001                      6018.00            143563.00                                                                                                                                                                 
TTGS08-2014001                   40326.00    177871.00      1.000                                                                                                                                                      

TTGS08-2015006                     30692.00    105793.00                                                                                                                                                                 
TTGS08-2015006                     57120.00    132221.00      1.000

So it looks like this:

Code:
TTGS08-2014001        6018.00       40326.00      143563.00      177871.00    1.000
TTGS08-2015006       30692.00       57120.00      105793.00      132221.00    1.000

If you could quickly explain the code, I would appreciate it. Thanks for your help!

Last edited by Don Cragun; 05-17-2016 at 06:47 PM.. Reason: Change QUOTE tags to CODE tags and add CODE tags.
# 2  
Old 05-17-2016
Are you joining pairs of lines? Or, are you joining pairs of lines if and only if the 1st fields on both lines are identical? Or, are you joining all lines that have the same string in the 1st field? (If the last one, are the lines being joined always adjacent in the input file?)

What have you tried?

What operating system are you using?
# 3  
Old 05-17-2016
Code:
# gnu awk
awk '
NF {
   if (! vars[$1]) {var[vc++]=$1; vars[$1]=$1}   # load column 1 array
   for (i=2; i<=NF; i++) arr[$1,arrc[$1]++]=$i;  # load columns 2 to end in columm 1 arrays
}
END {
   for (i=0; i<vc; i++) {                        # loop thru column 1 vars
      for (j=0; j<arrc[var[i]]; j++) {           # load working output array
         tarr[j]=arr[var[i],j];
      }
      n=asort(tarr);                             # sort working array
      $0=sprintf("%-20s", var[i]);               # build output line string column 1 first
      for (j=2; j<=n; j++) {                     # build output string with sorted working array
         $0=$0 sprintf("%15s", tarr[j]);
         delete tarr[j];                         # clear working array for next loop
      }
      $0=$0 sprintf("%15s",tarr[1]);             # last var in last column
      delete tarr[0];
      print                                      # print output line string
   }
}
' infile

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to reformat output if input file is empty, but not if file has data in it

The below awk improved bu @MadeInGermany, works great as long as the input file has data in it in the below format: input chrX 25031028 25031925 chrX:25031028-25031925 ARX 631 18 chrX 25031028 25031925 chrX:25031028-25031925 ARX 632 14... (3 Replies)
Discussion started by: cmccabe
3 Replies

2. Shell Programming and Scripting

Reformat awk output

I need to rearrange the output but i am unable to arrange it to match the format. In the output i need NAME=\"To in the column . Bash: #!/bin/bash cd /cygdrive/c/output/a cat *.txt > output.txt i=/cygdrive/c/output/a/output.csv #echo "NE_Name, Source, Destination, OSPF_AREA_ID"... (4 Replies)
Discussion started by: adgjmpt
4 Replies

3. Shell Programming and Scripting

Using awk to reformat file output

Hi there. I need to reformat a large file. Here is a sample of the file. NETIK0102_UCS_Boot_a,NETIK0102_UCS_Boot_b 5200 2438 70G 5200 2439 70G NETIK0102_UCS_HBA0_a,NETIK0102_UCS_HBA1_b,NETIK0102_UCS_HBA2_a,NETIK0102_UCS_HBA3_b 2673 19D7 55G 2673 19C0 30G 2673 19F5 120G... (5 Replies)
Discussion started by: kieranfoley
5 Replies

4. Shell Programming and Scripting

awk reformat file

Hello: When I tried a perl-oneliner to re-format fasta file. infile.fasta >YAL069W-1.334 Putative promoter CCACACCACACCCACACACC ACACCACACCCACACACACA ACAGCCCTAATCTAACCC >YAL068C-7235.2170 Putative ABC sequence TACGAGAATAATTT ACGTAAATGAAGTT TATATATAAA >gi|31044174|gb|AY143560.1|... (15 Replies)
Discussion started by: yifangt
15 Replies

5. Shell Programming and Scripting

awk to reformat text

I have this input and want output like below, how can I achieve that through awk: Input: CAT1 FRY-01 CAT1 FRY-04 CAT1 DRY-03 CAT1 FRY-02 CAT1 DRY-04 CAT2 FRY-03 CAT2 FRY-02 CAT2 DRY-01 FAT3 DRY-12 FAT3 FRY-06 Output: category CAT1 item FRY-01 (7 Replies)
Discussion started by: aydj
7 Replies

6. Shell Programming and Scripting

Reformat MLS Data - Use AWK?

I am helping my wife set up a real estate site and I am starting to integrate MLS listings. We are using a HostGator level 5 VPS running CentOS and have full root and SSH access to the VPS. Thus far I have automated the daily FTP download of listings from our MLS server using a little sh script.... (4 Replies)
Discussion started by: Chicago_Realtor
4 Replies

7. Shell Programming and Scripting

awk to reformat a text file

I am definitely not an expert with awk, and I want to reformat a text file like the following. This is probably a very easy one for an expert out there. I would like to keep the lines in the same order, but move the heading to only be listed once above the lines. This is what the text file... (7 Replies)
Discussion started by: linux4life
7 Replies

8. Shell Programming and Scripting

Reformat text table

Hello, I have a challenge here to reformat a text table. The original table follows: Item01: m1, m2, m3: A; m4, m5, m6: B; m7, m8: C; m9 m10: D Item02: m1, m9, m10: A; m7, m5, m6: C; m2, m3, m4, m8: D Item03: m1, m6, m7: A; m2: B; m3, m4: C; m5 m8 m9 m10: D . . . Please note: 1)... (7 Replies)
Discussion started by: yifangt
7 Replies

9. Shell Programming and Scripting

help reformat data with awk

I am trying to write an awk program to reformat a data table and convert the date to julian time. I have all the individual steps working, but I am having some issues joing them into one program. Can anyone help me out? Here is my code so far: # This is an awk program to convert the dates from... (4 Replies)
Discussion started by: climbak
4 Replies
Login or Register to Ask a Question