Format conversion

Can you help me get the desired output?
Below is the input

CONA= 0. 5. 10. 15. 20. 25. 30. 35. 40. 45. 50. 55. 60. 65. 70. 75. 80. 85. 90. 95. 100. 105. 110. PLANA= 0. 15. 30. 45. 60. 75. 90. 105. 120. 135. 150. 165. 180. ITABLE= 87.3 171.4 242.9 297.6 322.8 325.6 306.8 284.5 273.4 272.2 270.2 264.5 241.7 231.3 212.0 180.4 151.8 106.3 64.7 24.5 10.1 3.0 0 87.3 168.1 238.1 293. 319.7 325.3 308.5 284. 270.5 268.5 265.4 261.0 239. 227.8 207.8 175.6 145.3 102.3 62.3 23.5 9.7 2.9 0.1 87.3 159.4 224.5 279.5 308. 316 307. 278.7 260.5 253.5 248.3 247.1 227.9 210.9 190. 159.1 124.7 86.3 51.5 18. 7.2 2.1 0.4 87.3 146.2 201.0 247.5 280.9 293.9 297.4 277.4 252.2 236.9 223.0 217.4 205.8 188. 166.2 136 98.1 61.8 32.7 10.9 3.6 1.1 0.3 87.3 127.2 168.1 202.4 230.7 251.2 262.5 256 240. 221.2 199.4 184.1 165.1 150 130.7 101.8 67.7 35.5 15.9 4.5 1.2 0.5 0.2 87.3 106.5 128. 145.9 160.4 171.8 182.5 187.0 184.1 182.4 169.1 150.9 128. 104.1 81.0 62.9 38. 13.1 2. 0. 0.2 0.1 0 87.3 86.9 87.4 85.7 83.6 81.3 79.7 77.6 77.1 76.1 70.4 66.5 57.8 45.6 33.1 24 13.4 3.5 0.3 0.1 0.2 0.0 0 87.3 71.1 60.2 49.3 39.5 31.1 24.2 19.0 15.4 13.8 12.7 11. 8.5 6.3 4.5 3.0 1.8 0.8 0.1 0.1 0.0 0.1 0.0 87.3 60.1 43.3 30.1 20.5 13. 8.6 5.5 3.9 2.9 2. 2.0 1.6 1.3 1.2 1.1 1.0 0.6 0.1 0.1 0.1 0.1 0.0 87.3 52.1 32.7 20.2 12.1 7.1 4.3 2.9 2.1 1. 1.4 1.2 1.0 1.0 0.8 0.9 0.8 0.5 0.1 0.0 0.1 0.1 0.0 87.3 46.6 26.5 15.0 8.2 4.6 3.0 2.2 1.7 1. 1.1 1.1 1.0 0.7 0.7 0.8 0. 0.3 0.1 0.0 0.1 0.0 0.0 87.3 43.3 23.1 12.3 6. 3.6 2.5 1.9 1.4 1.2 1.1 1.1 0.9 0.4 0.4 0.4 0.3 0.2 0.1 0.0 0.1 0.1 0.0 87.3 42.4 22.1 11.5 5.8 3. 2.3 1.8 1.3 1.1 1.0 1.1 0.6 0.3 0.2 0.2 0.1 0.1 0 0.1 0.1 0.1 0.1

Desired output is

CONA,PLANA,ITABLE
0. 5. 10. 15. 20. 25. 30. 35. 40. 45. 50. 55. 60. 65. 70. 75. 80. 85. 90. 95. 100. 105. 110.,0. 15. 30. 45. 60. 75. 90. 105. 120. 135. 150. 165. 180.,87.3 171.4 242.9 297.6 322.8 325.6 306.8 284.5 273.4 272.2 270.2 264.5 241.7 231.3 212.0 180.4 151.8 106.3 64.7 24.5 10.1 3.0 0 87.3 168.1 238.1 293. 319.7 325.3 308.5 284. 270.5 268.5 265.4 261.0 239. 227.8 207.8 175.6 145.3 102.3 62.3 23.5 9.7 2.9 0.1 87.3 159.4 224.5 279.5 308. 316 307. 278.7 260.5 253.5 248.3 247.1 227.9 210.9 190. 159.1 124.7 86.3 51.5 18. 7.2 2.1 0.4 87.3 146.2 201.0 247.5 280.9 293.9 297.4 277.4 252.2 236.9 223.0 217.4 205.8 188. 166.2 136 98.1 61.8 32.7 10.9 3.6 1.1 0.3 87.3 127.2 168.1 202.4 230.7 251.2 262.5 256 240. 221.2 199.4 184.1 165.1 150 130.7 101.8 67.7 35.5 15.9 4.5 1.2 0.5 0.2 87.3 106.5 128. 145.9 160.4 171.8 182.5 187.0 184.1 182.4 169.1 150.9 128. 104.1 81.0 62.9 38. 13.1 2. 0. 0.2 0.1 0 87.3 86.9 87.4 85.7 83.6 81.3 79.7 77.6 77.1 76.1 70.4 66.5 57.8 45.6 33.1 24 13.4 3.5 0.3 0.1 0.2 0.0 0 87.3 71.1 60.2 49.3 39.5 31.1 24.2 19.0 15.4 13.8 12.7 11. 8.5 6.3 4.5 3.0 1.8 0.8 0.1 0.1 0.0 0.1 0.0 87.3 60.1 43.3 30.1 20.5 13. 8.6 5.5 3.9 2.9 2. 2.0 1.6 1.3 1.2 1.1 1.0 0.6 0.1 0.1 0.1 0.1 0.0 87.3 52.1 32.7 20.2 12.1 7.1 4.3 2.9 2.1 1. 1.4 1.2 1.0 1.0 0.8 0.9 0.8 0.5 0.1 0.0 0.1 0.1 0.0 87.3 46.6 26.5 15.0 8.2 4.6 3.0 2.2 1.7 1. 1.1 1.1 1.0 0.7 0.7 0.8 0. 0.3 0.1 0.0 0.1 0.0 0.0 87.3 43.3 23.1 12.3 6. 3.6 2.5 1.9 1.4 1.2 1.1 1.1 0.9 0.4 0.4 0.4 0.3 0.2 0.1 0.0 0.1 0.1 0.0 87.3 42.4 22.1 11.5 5.8 3. 2.3 1.8 1.3 1.1 1.0 1.1 0.6 0.3 0.2 0.2 0.1 0.1 0 0.1 0.1 0.1 0.1
 

Try

$ awk '{for(i=1;i<=NF;i++)if($i~/^[0-9]/){d=d FS $i}else{d=(!d)?d:d OFS;gsub("=",x,$i);h=(!h)?$i :h OFS $i}}{print h;print d}' OFS=,   file

Resulting

CONA,PLANA,ITABLE
 0. 5. 10. 15. 20. 25. 30. 35. 40. 45. 50. 55. 60. 65. 70. 75. 80. 85. 90. 95. 100. 105. 110., 0. 15. 30. 45. 60. 75. 90. 105. 120. 135. 150. 165. 180., 87.3 171.4 242.9 297.6 322.8 325.6 306.8 284.5 273.4 272.2 270.2 264.5 241.7 231.3 212.0 180.4 151.8 106.3 64.7 24.5 10.1 3.0 0 87.3 168.1 238.1 293. 319.7 325.3 308.5 284. 270.5 268.5 265.4 261.0 239. 227.8 207.8 175.6 145.3 102.3 62.3 23.5 9.7 2.9 0.1 87.3 159.4 224.5 279.5 308. 316 307. 278.7 260.5 253.5 248.3 247.1 227.9 210.9 190. 159.1 124.7 86.3 51.5 18. 7.2 2.1 0.4 87.3 146.2 201.0 247.5 280.9 293.9 297.4 277.4 252.2 236.9 223.0 217.4 205.8 188. 166.2 136 98.1 61.8 32.7 10.9 3.6 1.1 0.3 87.3 127.2 168.1 202.4 230.7 251.2 262.5 256 240. 221.2 199.4 184.1 165.1 150 130.7 101.8 67.7 35.5 15.9 4.5 1.2 0.5 0.2 87.3 106.5 128. 145.9 160.4 171.8 182.5 187.0 184.1 182.4 169.1 150.9 128. 104.1 81.0 62.9 38. 13.1 2. 0. 0.2 0.1 0 87.3 86.9 87.4 85.7 83.6 81.3 79.7 77.6 77.1 76.1 70.4 66.5 57.8 45.6 33.1 24 13.4 3.5 0.3 0.1 0.2 0.0 0 87.3 71.1 60.2 49.3 39.5 31.1 24.2 19.0 15.4 13.8 12.7 11. 8.5 6.3 4.5 3.0 1.8 0.8 0.1 0.1 0.0 0.1 0.0 87.3 60.1 43.3 30.1 20.5 13. 8.6 5.5 3.9 2.9 2. 2.0 1.6 1.3 1.2 1.1 1.0 0.6 0.1 0.1 0.1 0.1 0.0 87.3 52.1 32.7 20.2 12.1 7.1 4.3 2.9 2.1 1. 1.4 1.2 1.0 1.0 0.8 0.9 0.8 0.5 0.1 0.0 0.1 0.1 0.0 87.3 46.6 26.5 15.0 8.2 4.6 3.0 2.2 1.7 1. 1.1 1.1 1.0 0.7 0.7 0.8 0. 0.3 0.1 0.0 0.1 0.0 0.0 87.3 43.3 23.1 12.3 6. 3.6 2.5 1.9 1.4 1.2 1.1 1.1 0.9 0.4 0.4 0.4 0.3 0.2 0.1 0.0 0.1 0.1 0.0 87.3 42.4 22.1 11.5 5.8 3. 2.3 1.8 1.3 1.1 1.0 1.1 0.6 0.3 0.2 0.2 0.1 0.1 0 0.1 0.1 0.1 0.1

Hi,

Thanks for the script its working fine but a small tweak is required as you can see that there is a comma delimiter and I have highlighted each with 3 different colours.. Could you please help me add that inbetween the values? IT is like 3 different columns!

Hey I modified now.,...try

1 Like

Try also:

awk     '               {L1=(L1?L1",":"") $NF;}
         NR>1           {$NF=""; L2=(L2?L2",":"")$0} 
         END            {sub (/,[^,]*$/,"",L1)
                         print L1, ORS, L2}
        ' RS== file
1 Like

Thanks a ton Akshay and Rudi, Both the codes are working good!! :slight_smile: :b::b::b:

It's nice to hear...welcome