Search code examples
unixseparator

Unix. Change separator between 2 specific columns that have a different separator


I have a huge .txt file A with 6 columns. The first 5 columns are separated by a tab, but columns 5 and 6 are separated by a white space. Some columns have missing elements. Using Unix, how can I generate another file B.txt that has columns 5 & 6 separated by a tab?

A.txt

1   886620  rs201016776 T   A 1:886620-TG
1   879576  rs115979567 C   T
1   886817  rs111748052;rs10465241  C   CATTTT  JHU_1.886816
1   889255  rs150003341 C   T Variant37585
1   891659  rs116557519 G   A JHU_1.891658

B.txt

1   886620  rs201016776    T    A    1:886620-TG
1   879576  rs115979567    C    T
1   886817  rs111748052;rs10465241    C    CATTTT    JHU_1.886816
1   889255  rs150003341    C    T    Variant37585
1   891659  rs116557519    G    A    JHU_1.891658

Solution

  • Use column -t inputFile

     $ column -t A.txt > B.txt
    

    If the tabular form using column doesn't work, one can be explicit about the tab using awk:

     $ awk '{print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6"\t"$7}' A.txt > B.txt