How to decode text files?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to decode text files?
# 8  
Old 01-30-2013
Your second code/sample set is far clearer and consistent:
Your code is reading
Code:
  2.AUCE                50  39 12 12314 453 0 S 5730 E      130

into variables (ln 2 & 3) using this format
Code:
xxxxaaaaxaaaaaaaaaaaaxiiiiixiixiiIIiiIIiiIIiixaxiiIIxaxiiiiiiiiixaaaaaxaaaa
    clsgn               cno pno  mm  hh  ld   lp  lgm        nop aqsy  comnm       
         shnm                  yy  dd  mn  lm   lgd  lgp

(watch out - there's one space too many in cno and nop!), calculates decimal lat & long from ld, lm, lgd, lgm, each in degrees/seconds, and writes out the variables
Code:
clsgn               cno pno  lat  long dd mm yy  time dstand(k)
     shnm                                                  tstand(k)

using this format
Code:
aaaaxaaaaaaaaaaaaxiiiiixiixff.ffxff.ffxiixiixiixff.ffxiiiixff.ff

producing this output line
Code:
AUCE                 50 39 53.00 57.50 23  1 12 14.04    0  3.74

which is identical to your sample output:
Code:
AUCE                 50 39 53.00 57.50 23  1 12 14.04    0  3.74


HOoooKay, here we go. There may be more elegant solutions possible, and the bells 'n whistles I leave up to you to implement, but at least you got sth to start with:
Code:
awk     'function makeheader()
                {clsgn = substr ($0,  5,  4)
                 shnm  = substr ($0, 12, 12)
                 cno   = substr ($0, 23,  5)
                 pno   = substr ($0, 29,  2)
                 yy    = substr ($0, 32,  2)
                 mm    = substr ($0, 34,  2)
                 dd    = substr ($0, 36,  2)
                 hh    = substr ($0, 38,  2)
                 mn    = substr ($0, 40,  2)
                 time  = hh + mn / 100
                 ld    = substr ($0, 42,  2)
                 lm    = substr ($0, 44,  2)
                 lat   = sprintf ("%4.2f", ld + lm / 60)
                 lp    = substr ($0, 47,  1)
                 lgd   = substr ($0, 49,  2)
                 lgm   = substr ($0, 51,  2)
                 long  = sprintf ("%4.2f", lgd + lgm / 60)
                 lgp   = substr ($0, 54,  1)
                 nop   = substr ($0, 56,  9)
#                 aqsy
#                 comnm
                 header = clsgn " " shnm " " cno " " pno " " lat " " long " " yy " " mm " " dd " " time
                }

         /^  2\./{makeheader(); next}

                 {for (i=0; i<9; i++) print header, substr ($0, i*9+3, 3), sprintf ("%5.2f", substr ($0, i*9+6, 4)/100)}
        ' decode.txt
AUBZ               158   1 10.10 75.70 11  1 16 20.43   0 28.46
AUBZ               158   1 10.10 75.70 11  1 16 20.43   5 28.33
AUBZ               158   1 10.10 75.70 11  1 16 20.43  10 28.21
AUBZ               158   1 10.10 75.70 11  1 16 20.43  15 28.15
.
.
.
AUCE                50  39 53.00 57.50 12  1 23 14.04   0  3.74
AUCE                50  39 53.00 57.50 12  1 23 14.04   5  3.74
AUCE                50  39 53.00 57.50 12  1 23 14.04  10  3.75
AUCE                50  39 53.00 57.50 12  1 23 14.04  15  3.75
.
.
.


Last edited by RudiC; 01-30-2013 at 11:06 AM.. Reason: prelim solution found
This User Gave Thanks to RudiC For This Post:
# 9  
Old 01-30-2013
Thank you so much...will you please explain briefly.....
# 10  
Old 01-31-2013
More tedious than genius: If the input line starts with " 2.": count characters (using the FORTRAN format as a template) and assign to the header's partial variables (which you don't mandatorily need, you can use the substr()s immediately, except for time, lat, long) to compose the header. Then, for the next lines read, split them repeatedly into dstand/tstand pairs, outputting each pair together with the header variable.
Exercise for you: drop the function and compose header in the action part of /^ 2./, without using all the little variables.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Decode a file

hi i have this file : <?xml version="1.0" encoding="UTF-8"?> <OnDemand xmlns="http://xsd.telecomitalia.it/Schema/crmws.entity.OnDemand" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xsd.telecomitalia.it/Schema/crmws.entity.OnDemand... (2 Replies)
Discussion started by: Francesco_IT
2 Replies

2. Windows & DOS: Issues & Discussions

Decode windows .dat file

I have received a file from a Windows server that in Linux hexedit shows the following first few characters. AA 18 3C 2B 60 56 03 00 00 01 01 00 The Windows program may have received this via RS232. I need to "understand" this on a Linux machine. Please suggest where I may start decoding... (4 Replies)
Discussion started by: Alf Stockton
4 Replies

3. UNIX for Dummies Questions & Answers

What does this command do? and how to decode all other lines

Hello, I have an encoded file and I wish to see what is written inside. The first line is given below: eval "$(dd if=$0 bs=1 skip=69 2>/dev/null|gpg -d 2>/dev/null)"; exit PS: When I google above code, it says that command is use for encryption... Following lines include many strange... (2 Replies)
Discussion started by: baris35
2 Replies

4. AIX

How to decompile or decode an executable?

I have a file type of: executable (RISC System/6000 V3.1) or obj module not stripped How can I decode it? I know that this may be somewhat involved, but if you could steer me in the right direction, I would appreciate it. Thanks! (2 Replies)
Discussion started by: gg48gg
2 Replies

5. Linux

Decode the statement!!

What will the below statement do ?:confused: && { && {eval `/bin/setup 1`} || && { VAR="/tmp" } export $VAR; } (3 Replies)
Discussion started by: krishnaux
3 Replies

6. Programming

How to Decode an image using openGL

Hi, How to decode an image using openGL library libjpeg .. which are the steps needed to do this using C language.. actually my work is to decode the image, store it on the buffer, and place it on cube surface.. please guide me,,any answer will appreciated .. (8 Replies)
Discussion started by: Ravikishore
8 Replies

7. Programming

Help to decode in perl script

Hi, I am having a file in below stucture: header { subheader1 { field1 : value field2 : value field3: value } //end of subheader1 subheader2 { subheader3 { field4 : value field5 : value field6: value } subheader4 (6 Replies)
Discussion started by: kallol
6 Replies

8. Shell Programming and Scripting

auto decode a value to different value

Okay, This is not something I've tried to do before, but what I want (need) to do is when a value is read in it gets changed to the value needed. I've been given a list of ids that I need to check against the ids I have in my system, but as is the case we don't have the same naming convention... (2 Replies)
Discussion started by: nhatch
2 Replies

9. Shell Programming and Scripting

Decode email

In pine email, when you receive an email with an attachment, the content of the attachment is incoded (content-transfer-encoding: base64). I am trying to write a shell script that will read the mail file, and it will save the attachment of an email to a directory. I want to do this by reading... (6 Replies)
Discussion started by: mskarica
6 Replies

10. Shell Programming and Scripting

Please decode in English

Hello: Can anyone please decode this script in English. I have also made some comments which I know.. The actual script does not have one comment also.. #! /bin/ksh . odbmsprd_env.ksh #setting the env.. echo $0 Started at : `date '+%d-%m-%Y %H:%M:%S'` # what's echo $0 ... (4 Replies)
Discussion started by: ST2000
4 Replies
Login or Register to Ask a Question