Convert delimited to fixed length


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Convert delimited to fixed length
# 1  
Old 10-25-2005
Convert delimited to fixed length

Hi, I have to change a tab delimited file to a fixed length file. For text fields I need to left justify and NULL fill to the right and for number fields I need to right justify and zero fill to the left. If there are spaces between words in a text field I need to keep them as spaces. I am using korn shell and AIX. Here is a portion of a flat file that I am working with (First field is text and 12 characters long and second is a number 10 characters long) -
Bob Smith<<tab>>139.90
Kathy Reys<<tab>>-40.50

Here is the output that I need -
Bob Smith 0000139.90
Kathy Reys 0000-40.50
# 2  
Old 10-25-2005
What an odd way to handle negative numbers...
Code:
#! /usr/bin/ksh
typeset -L13 name
typeset -R10 val2
IFS="<<tab>>"
exec < datafile
while read name val ; do
         val2="0000000000000000"$val
         echo "$name $val2"
done
exit 0

# 3  
Old 10-26-2005
Got me further

Thanks for that help, that got me most of the way to where I needed. Do you know how to do the NULL padding after the strings instead of space padding? I thought I figured it out with a -Z on the typeset, but it doesn't seem to be working. Thanks again for the help.
# 4  
Old 10-26-2005
Sheesh, what a crazy format. ksh uses strings which are null terminated and this makes working with nulls virtually impossible. We can pad with a substitute character and then translate all occurences of the sunstitute character to nulls as the last operation.
Code:
#! /usr/bin/ksh
typeset -L13 name2
typeset -R10 val2
PAD="%"
NULLS="${PAD}${PAD}${PAD}${PAD}"
NULLS="${NULLS}${NULLS}${NULLS}${NULLS}"
IFS="<<tab>>"
exec < data
while read name val ; do
        val2="00000000000000"$val
        name2=${name}${NULLS}
        echo "$name2 $val2"
done | tr $PAD "\000"
exit 0

# 5  
Old 10-26-2005
That's it!!!

Thanks for your help.
# 6  
Old 10-26-2005
Code:
ruby -F\011 -nale'print $F[0].ljust(12,0.chr),$F[1].rjust(10,"0")' file

# 7  
Old 10-26-2005
1 More Thing

I thought I had this figured out, but I'm running into another scenario that I need help with. Do you know how I can fix this if I have no data in a field, <<tab>><<tab>>? What is happening is that it's just going to the next field where there is data and using that, but I need it to use the empty field. Not sure if I explained that well, so here's an example -
Input file - (first field left justified NULL padded (10bytes), second field left justified NULL padded (1 byte), and third field left justified NULL padded (10bytes))
Bob Smith<<tab>><<tab>>Susan Smit
Kathy Reys<<tab>>A<<tab>>Ron Davis

Output file currently getting -
Bob Smith<<NULL>>Susan Smit
Kathy ReysARon Davis<<NULL>>

Needed output -
Bob Smith<<NULL>><<NULL>>Susan Smit
Kathy ReysARonDavis<<NULL>>

Hopefully that makes sense, if not I can try to explain more.
Thanks.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Convert a fixed width file to a delimited file

Hi - this is a generic question .... is there any utility which can convert a fixed width file format to a delimited file (any given character delimited) ? (5 Replies)
Discussion started by: i4ismail
5 Replies

2. Shell Programming and Scripting

Convert variable length record to fixed length

Hi Team, I have an issue to split the file which is having special chracter(German Char) using awk command. I have a different length records in a file. I am separating the files based on the length using awk command. The command is working fine if the record is not having any... (7 Replies)
Discussion started by: Anthuvan
7 Replies

3. Shell Programming and Scripting

Fixed length to delimited file conversion

Hi All, I need to convert a fixed length file to a delimited file with , (comma). But not all columns, some of the columns in the fixed files are used as fillers and I do not need that in the output file. test_fixed_len.txt I 0515 MR 394 I 0618 MR & MRS 942 I 0618 MR & MRS... (7 Replies)
Discussion started by: member2014
7 Replies

4. UNIX for Dummies Questions & Answers

convert # delimited text file to fixed width

Hello gurus, I have a file containing 5 columns delimited by '#' as shown in the example below: HRP1000-PLVAR#HRP1000-OTYPE#HRP1000-OBJID#HRP1000-BEGDA#HRP1000-ENDDA# 99991231#AU7129#000000000#1 PROCTER & GAMBLE# 99991231#TT4283#1000013883#21111 LAUNDRY# 99991231#TT4283#1000013884#21121 DISH... (3 Replies)
Discussion started by: chumsky
3 Replies

5. Shell Programming and Scripting

converting fixed length file to delimited file

hi , i need to convert fixed length file to delimited file using unix where length of each column is variable (2 Replies)
Discussion started by: Nishithinfy
2 Replies

6. UNIX for Dummies Questions & Answers

Convert a tab delimited/variable length file to fixed length file

Hi, all. I need to convert a file tab delimited/variable length file in AIX to a fixed lenght file delimited by spaces. This is the input file: 10200002<tab>US$ COM<tab>16/12/2008<tab>2,3775<tab>2,3783 19300978<tab>EURO<tab>16/12/2008<tab>3,28523<tab>3,28657 And this is the expected... (2 Replies)
Discussion started by: Everton_Silveir
2 Replies

7. UNIX for Dummies Questions & Answers

What the command to find out the record length of a fixed length file?

I want to find out the record length of a fixed length file? I forgot the command. Any body know? (9 Replies)
Discussion started by: tranq01
9 Replies

8. Shell Programming and Scripting

convert fixed length file to CSV

Newbie Looking for a script to convert my input file to delimited text file. Not familier with AWK or shell programing. Below is sample record in my input file and the expected output format. My OS is HPUX 11.23. Thanks in advance for your assistance. tbtbs input file:... (12 Replies)
Discussion started by: tbtbs
12 Replies

9. Shell Programming and Scripting

how to convert Fixed length file to delimited file.

I have below fixed lenth file . I have to convert this to delimitted file. File1.txtE116005/29/19930E001E000 E12201/23/19940E001E003 E10406/4/19940E001E003 I want to convert this to : E116,0,05/29/1993,0,E001,E000 E122,0,1/23/1994,0,E001,E003 E104,0,6/4/1994,0,E001,E003 I have a... (7 Replies)
Discussion started by: satyam_sat
7 Replies

10. Shell Programming and Scripting

convert XML file into Text file(fixed length)

If someone out there could help me out with this problem. I would really appreciate it. I am trying to convert xml into text file(fixed length) using Unix Borne shell scripts. My xml file: <root> <header_rec recordtype="00"> <record_id>00</record_id> ... (0 Replies)
Discussion started by: ram2s2001
0 Replies
Login or Register to Ask a Question