Giving format to a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Giving format to a file
# 1  
Old 11-15-2005
Giving format to a file

hi all,

i have a big problem and i don't know what to do. This is the thing: i have a flat file with 26 fields, which are separated by ';'
by example, i have this:

Peter;Smith;2005;200508; .........

if the lengths of the fields are:
field 1: Alphanumeric[10] - field 2: Alphanumeric[10] - field 3: numeric[8] - field 4: numeric [10] - etc ....
i want this:

Peter ;Smith ;00002005;0000200508;

I need giving format to each field, to get the length of each field, which is established. if the field is numeric, i must fill with zeroes to the left of the number, until the length of the field is completed. if the field is alphanumeric, i must field whit blank spaces to the rigth of the value.

an important thing, is what i must keep the field separator (Smilie.

how can i do thatΏ?
please, help me
thanks for your help
# 2  
Old 11-15-2005
given a sample file debian.txt
Code:
Peter;Smith;2005;200508

and a script debian.awk
Code:
BEGIN {
  FS=OFS=";"
  PAT_percent="%"
      # 'LENGTH of the fields'
  split("10 10 8 10", arrL, " ")
      # 'TYPE of the fields"
  split("s s d d", arrT, " ")
}

{
  for(i=1; i <= NF; i++) {
    format=sprintf("%c%c%d%s%s", PAT_percent, (arrT[i] == "s") ? "-" : "0", arrL[i], arrT[i], (i<NF) ? OFS : "\n")
    printf(format, $i)
 }
}

running the script as:
nawk -f debian.awk debian.txt

produces:
Code:
Peter     ;Smith     ;00002005;0000200508


Last edited by vgersh99; 11-15-2005 at 03:00 PM..
# 3  
Old 11-17-2005
thanks

thanks vgersh99 - it works ok
# 4  
Old 03-06-2008
Hi,

I tried vgersh's code.but why is that i getting everything aligned right?
I am new to awk.
How can align everything left.
Sreejith_VK
# 5  
Old 03-06-2008
At last I found the answer to my question.
{The change is in bold}
Code:
Quote:
BEGIN {
FS=OFS=";"
PAT_percent="%"
# 'LENGTH of the fields'
split("-10 -10 -8 -10", arrL, " ")
# 'TYPE of the fields"
split("s s d d", arrT, " ")
}

{
for(i=1; i <= NF; i++) {
format=sprintf("%c%c%d%s%s", PAT_percent, (arrT[i] == "s") ? "-" : "0", arrL[i], arrT[i], (i<NF) ? OFS : "\n")
printf(format, $i)
}
}
This will align your output to left.
Sreejith_VK
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

GetLine fn always giving last line of the file

Hi, Its bit urget for me to complete. pls help me. I am parsing 2 file 1. INDATA(Data file) 2. GRPFIL(Reference) every record in INDATA should be verified with GRP_DATA. I am seeing the output from only the last line of ref file, its not searching all the lines. INDATA sample... (1 Reply)
Discussion started by: hyperion.krish
1 Replies

2. Shell Programming and Scripting

Sorting row in a giving file

hi I would like to sort rows in a givin file except the first colomn (or first element of a row) just like the following example file input : 1 3 8 5 2 2 8 1 3 9 8 10 file output : 1 8 5 3 2 8 2 1 3 10 9 8 (4 Replies)
Discussion started by: yassinegoth
4 Replies

3. Shell Programming and Scripting

Converting windows format file to unix format using script

Hi, I am having couple of files which i used to copy from windows to Linux, so now in case of text files (CTRL^M) appears at end of line. I know i can convert this windows format file to unix format file by running dos2unix. My requirement here is that i want to do it automatically using a... (5 Replies)
Discussion started by: sarbjit
5 Replies

4. Shell Programming and Scripting

How to execute a script without giving x permission to the file?

How to execute a script with out giving x permission to the file? (7 Replies)
Discussion started by: praveen_b744
7 Replies

5. UNIX for Dummies Questions & Answers

To convert multi format file to a readable ascii format

Hi I have a file which has ascii , binary, binary decimal coded,decimal & hexadecimal data with lot of special characters (like φƒ.ƒ.„έέ‘Š·œƒ.„έέ‘Š· ) in it. I want to standardize the file into ASCII format & later use that as source . Can any one suggest a way a logic to convert such... (5 Replies)
Discussion started by: gaur.deepti
5 Replies

6. Shell Programming and Scripting

change the format of a giving file ( a bit challenge) Thank you

Hi, I have a file like this: mgr1.dbf tool.dbf usr.dbf wow19.dbf wow2wow.dbf Can anyone help change the format after each line of reading to: mgr2.dbf # add 1 of *1.dbf tool2.dbf # if not a number exist, make it default to 2 usr2.dbf wow20.dbf # add 1 of *19.dbf wow3wow.dbf ... (5 Replies)
Discussion started by: netbanker
5 Replies

7. Shell Programming and Scripting

Giving input to a c++ file

My C++ program creates a nxn matrix with given value. For e.g if the input is 10 it will creates a matrix of 10x10 now what i want is the script should run program and give input values in a variation of 1000. Say first matrix of 1000 then 2000 , 3000 ..... 10000. I tried using for loop but unable... (2 Replies)
Discussion started by: tonyaim83
2 Replies

8. UNIX for Dummies Questions & Answers

Convert UTF8 Format file to ANSI format

:confused: Hi i am trying to convert a file which is in UTF8 format to ANSI format i tried to use the function ICONV but it is throwing error Function i used it as $ iconv -f UTF8 -t ANSI filename Error iam getting is NOT Supported UTF8 to ANSI please some help me out on... (9 Replies)
Discussion started by: rajreddy
9 Replies

9. UNIX for Advanced & Expert Users

Convert UTF8 Format file to ANSI format

:) Hi i am trying to convert a file which is in UTF8 format to ANSI format i tried to use the function ICONV but it is throwing error Function i used it as $ iconv -f UTF8 -t ANSI filename Error iam getting is NOT Supported UTF8 to ANSI please some help me out on this.........Let me... (1 Reply)
Discussion started by: rajreddy
1 Replies

10. Solaris

/sbin/zonename file giving me problems

I'm trying to install the recommended patch cluster on a x86 Solaris 10 box. I get this error: ERROR: /sbin/zonename cannot be found. install_cluster for 10_x86 patch cluster not applied. Exiting. I tried touching the file and it gave a different error of: expected argument.. anyone... (1 Reply)
Discussion started by: BG_JrAdmin
1 Replies
Login or Register to Ask a Question