changing a variable length text to a fixed length


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
Question 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 out the field if it makes it easier.

Thanks
Dave
# 2  
How about printf?

Code:
$ X=abc
$ printf "%-18s" $X
abc               $

so...
Code:
$ X=$(printf "%-18s" $X)

You need to change the 10th field in every row to 18 characters?

Code:
$ cat file1.csv
1,2,3,4,5,6,7,8,9,10,11,12
a,b,c,d,e,f,g,h,i,j,k,l

$ awk -F, 'BEGIN {OFS=FS} {$10 = sprintf( "%-18s", $10 )}1' file1.csv
1,2,3,4,5,6,7,8,9,10                ,11,12
a,b,c,d,e,f,g,h,i,j                 ,k,l


Last edited by Scott; 08-02-2010 at 04:31 PM..
# 3  
Question

Hi Scott,
You mention 'change the 10th column' , I need to change the 10th field in the .csv file (the actual start column of field 10 will vary) .... does your solution still apply ?
Dave
# 4  
Hi.

Actually, I meant to say field.

I would normally say field, but somehow said column Smilie (so, yes!)

I updated my earlier post to remove the confusion.
This User Gave Thanks to Scott For This Post:
# 5  
Hi Scott,

I'm afraid your solution only works if there there are no spaces within the text ......... each space found within the text is also padded out to 18 spaces

Dave
# 6  
Hi.

I don't see this. Can you post an example input that shows this behaviour?

Thanks.
# 7  
PHP Still need solution

Hi Scott,

Input file

Code:
01,10,000020,*,*,******,999999,00,,WERK 28 - BUS
01,10,000030,*,*,******,999999,00,,WERK 30 - UNIMOG
01,10,000060,*,*,******,999999,20,,LASTWAGEN
01,10,000065,*,*,******,999999,00,,WERK 65 - TRANSP.
01,00,000001,*,*,******,999999,00,,DB-PKW
01,00,000010,*,*,******,999999,00,,DB-LKW
01,00,100012,*,*,******,999999,20,,600
01,00,100014,*,*,******,999999,20,,600 LANG 4-T RIG
01,00,100015,*,*,******,999999,20,,600 LANDAUER
01,00,100016,*,*,******,999999,20,,600 LANG 6-T RIG

Output from script, before and after, showing field length & text

Code:
   b4 change 13    WERK 28 - BUS
after change 72    WERK              28                -                 BUS
   b4 change 16    WERK 30 - UNIMOG
after change 72    WERK              30                -                 UNIMOG
     b4 change 9    LASTWAGEN
after change 18    LASTWAGEN
   b4 change 17    WERK 65 - TRANSP.
after change 72    WERK              65                -                 TRANSP.
     b4 change 6    DB-PKW
after change 18    DB-PKW
     b4 change 6    DB-LKW
after change 18    DB-LKW
     b4 change 3    600
after change 18    600
   b4 change 16    600 LANG 4-T RIG
after change 72    600               LANG              4-T               RIG
   b4 change 12    600 LANDAUER
after change 36    600               LANDAUER
   b4 change 16    600 LANG 6-T RIG
after change 72    600               LANG              6-T               RIG

Shell Script

Code:
cat infile | while read line
do
  field=`echo $line | cut -d',' -f10`
  echo "   b4 change ${#field}    $field"
  field=$(printf "%-18s" $field)
  echo "after change ${#field}    $field"
done

Thanks
Dave

Last edited by dc18; 08-03-2010 at 03:34 PM..
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

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

Extracting fixed length number from a text file

Hi, I have a text file with sample records as CASE ID: 20170218881083 Original presentment record for ARN not found for Re-presentment I want to extract the 23 digit number from this file. I thought of using grep but initially couldn't extract the required number. However, after... (16 Replies)
Discussion started by: dsid
16 Replies

3. Shell Programming and Scripting

fixed length text file padding issues in AIX

Hi, I have a fixed length text file that needs to be cut into individual files in aix and facing padding issues. If I have multiple blank spaces in the file it is just making it one while cutting the files.. Eg:- $ - blank space filename:file.txt ... (2 Replies)
Discussion started by: techmoris
2 Replies

4. Shell Programming and Scripting

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... (3 Replies)
Discussion started by: jclanc8
3 Replies

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

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

7. Shell Programming and Scripting

Comparing column of variable length anf fixed width file

Hi, I have two input files. File1: ID Name Place 1-234~name1~Newyork 1-34~name2~Boston 1-2345~name3~Hungary File1 is a variable length file where each column is seperated by delimitter "~". File2: ID Country 1-34<<11 SPACES>>USA<<7 spaces>> 1-234<<10 SPACES>>UK<<8... (5 Replies)
Discussion started by: manneni prakash
5 Replies

8. Shell Programming and Scripting

Combining Two fixed width columns to a variable length file

Hi, I have two files. File1: File1 contains two fixed width columns ID of 15 characters length and Name is of 100 characters length. ID Name 1-43<<11 spaces>>Swapna<<94 spaces>> 1-234<<10 spaces>>Mani<<96 spaces>> 1-3456<<9 spaces>>Kapil<<95 spaces>> File2: ... (4 Replies)
Discussion started by: manneni prakash
4 Replies

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

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

Featured Tech Videos