Make variable length record a fixed length


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Make variable length record a fixed length
# 1  
Old 10-02-2009
Make variable length record a fixed length

Very, very new to unix scripting and have a unique situation. I have a file of records that contain 3 records types:
  • (H)eader Records
  • (D)etail Records
  • (T)railer Records
The Detail records are 82 bytes in length which is perfect. The Header and Trailer records sometimes are 82 bytes in length or can be 40, 55, basically any number.

I need an SED or AWK script to somehow take just the Header and Trailer records on the file and append white space to the end until the record becomes 82 bytes long.

Running in C shell.

Example:

H000000000ABCD
D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
T0000001

Thanks in advance
# 2  
Old 10-02-2009
Code:
[UNIX_Help]$ ll input.dat
-rw-r--r-- 1 rick users 114 2009-10-02 14:49 input.dat
[UNIX_Help]$ wc input.dat
  3  16 114 input.dat
[UNIX_Help]$ cat input.dat
HEADER
DETAIL This detail record is exactly eighty-two charcters in total length........
TRAILER record is short.
[UNIX_Help]$ awk -f pad.awk input.dat > output.dat
[UNIX_Help]$ ll output.dat
-rw-r--r-- 1 rick users 249 2009-10-02 14:51 output.dat
[UNIX_Help]$ wc output.dat
  3  16 249 output.dat
[UNIX_Help]$ cat output.dat
HEADER                                                                            
DETAIL This detail record is exactly eighty-two charcters in total length........ 
TRAILER record is short.                                                          
[UNIX_Help]$ 

[UNIX_Help]$ cat pad.awk
{
printf "%-82s\n",$0
}
[UNIX_Help]$

# 3  
Old 10-02-2009
awesome, awesome, awesome. Works great.
Thanks so much.SmilieSmilie Smilie
# 4  
Old 10-03-2009
One last question. I have been trying to get this to work in a one liner using execpgm.csh, but I get an error stating missing }. Any ideas???

Below is the actual line I am try to execute in a batch job script using c shell.

execpgm.csh 'awk '{printf "%-82s\n",$0}' $dd_InputEligFile > $dd_OutputEligFile'

Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. Shell Programming and Scripting

Make it to fixed length

Hi Team, I have a different length records in my text file.I would like to make all the records with same length. I want to check the maximum lenth and all other records make the same length It's urgent request. Thanks in Advance (2 Replies)
Discussion started by: Anthuvan
2 Replies

3. Shell Programming and Scripting

Append spaces the rows to make it into a required fixed length file

I want to make a script to read row by row and find its length. If the length is less than my required length then i hav to append spaces to that paritucular row. Each row contains special characters, spaces, etc. For example my file contains , 12345 abcdef 234 abcde 89012 abcdefgh ... (10 Replies)
Discussion started by: Amrutha24
10 Replies

4. Shell Programming and Scripting

Add substring in a file containing fixed length record.

I am new to awk and writing a script using awk. I have file containing fixed length records, I wish to extract 2 substring(each substring is padded with zeros on left e.g 000000003623) and add each substring respectively for every record in the file to get total sum of respective substring for all... (5 Replies)
Discussion started by: Devesh5683
5 Replies

5. Shell Programming and Scripting

changing a variable length text to a fixed length

Hi, Can anyone help with a effective solution ? I need to change a variable length text field (between 1 - 18 characters) to a fixed length text of 18 characters with the unused portion, at the end, filled with spaces. The text field is actually field 10 of a .csv file however I could cut... (7 Replies)
Discussion started by: dc18
7 Replies

6. Shell Programming and Scripting

search and replace fixed length record file

Hi I need to be search a file of fixed length records and when I hit a particular record that match a search string, substitute a known position field In the example file below FHEAD000000000120090806143011 THEAD0000000002Y0000000012 P00000000000000001234 TTAIL0000000003... (0 Replies)
Discussion started by: nedkelly007
0 Replies

7. 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

8. 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

9. Shell Programming and Scripting

fixed record length

hello! I have a file with fixed record length... format: 123445asdfg 4343777 sfgg I wanna convert it to 123445,asdfg ,4343,777 ,sfgg is there any way to do it? sed/grep/awk?? at the moment I use sed -e 's_ \(\)_,\1_g' but it works only if there are spaces between... (16 Replies)
Discussion started by: george_
16 Replies

10. Shell Programming and Scripting

creating a fixed length output from a variable length input

Is there a command that sets a variable length? I have a input of a variable length field but my output for that field needs to be set to 32 char. Is there such a command? I am on a sun box running ksh Thanks (2 Replies)
Discussion started by: r1500
2 Replies
Login or Register to Ask a Question