reply amount to another format


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting reply amount to another format
# 1  
Old 03-12-2007
reply amount to another format

hello,

i have a txt file called a.txt with million of records...I would like to change amount field (last two field)..if it displayed ".00" changed to "0.00" and displayed ".51" changed to "0.51"

example of a.txt

RECORD ID,CLIENT,CUSTOMER NAME,2883,12:05,8, 16.39, 191.34
RECORD ID,CLIENT,CUSTOMER NAME,2879,00:00,0, .00, .00
RECORD ID,CLIENT,CUSTOMER NAME,2873,00:00,0, .00, .00
RECORD ID,CLIENT,CUSTOMER NAME,2871,00:00,0, .00, .00
RECORD ID,CLIENT,CUSTOMER NAME,2865,00:00,0, .00, .00
RECORD ID,CLIENT,CUSTOMER NAME,2858,00:00,0, .00, .00
RECORD ID,CLIENT,CUSTOMER NAME,2876,00:00,0, .00, .00
RECORD ID,CLIENT,CUSTOMER NAME,2863,00:00,0, .00, .00
RECORD ID,CLIENT,CUSTOMER NAME,2868,00:00,0, .00, .00
RECORD ID,CLIENT,CUSTOMER NAME,2866,00:00,0, .00, .00
RECORD ID,CLIENT,CUSTOMER NAME,2864,00:00,0, .00, .00
RECORD ID,CLIENT,CUSTOMER NAME,2882,07:65, 11, 13.77, 160.80
RECORD ID,CLIENT,CUSTOMER NAME,2880,01:72,2,5.63, 65.76
RECORD ID,CLIENT,CUSTOMER NAME,2877,00:00, 18,4.63, 54.00
RECORD ID,CLIENT,CUSTOMER NAME,2874,00:00,2, .51,6.00
RECORD ID,CLIENT,CUSTOMER NAME,2870,01:65,1, .39,4.60

Last edited by happyv; 03-12-2007 at 11:28 PM..
# 2  
Old 03-12-2007
Hope this helps

Code:
$ awk -F"," '{gsub(/ .00/,"0.00",$7);gsub(/ .00/,"0.00",$8);print $1","$2","$3","$4","$5","$6","$7","$8}' tmp.txt
RECORD ID,CLIENT,CUSTOMER NAME,2883,12:05,8, 16.39, 191.34
RECORD ID,CLIENT,CUSTOMER NAME,2879,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2873,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2871,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2865,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2858,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2876,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2863,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2868,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2866,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2864,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2882,07:65, 11, 13.77, 160.80
RECORD ID,CLIENT,CUSTOMER NAME,2880,01:72,2,5.63, 65.76
RECORD ID,CLIENT,CUSTOMER NAME,2877,00:00, 18,4.63, 54.00
RECORD ID,CLIENT,CUSTOMER NAME,2874,00:00,2, .51,6.00
RECORD ID,CLIENT,CUSTOMER NAME,2870,01:65,1, .39,4.60
$ sed 's/ \.00/0.00/g' tmp.txt
RECORD ID,CLIENT,CUSTOMER NAME,2883,12:05,8, 16.39, 191.34
RECORD ID,CLIENT,CUSTOMER NAME,2879,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2873,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2871,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2865,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2858,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2876,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2863,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2868,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2866,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2864,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2882,07:65, 11, 13.77, 160.80
RECORD ID,CLIENT,CUSTOMER NAME,2880,01:72,2,5.63, 65.76
RECORD ID,CLIENT,CUSTOMER NAME,2877,00:00, 18,4.63, 54.00
RECORD ID,CLIENT,CUSTOMER NAME,2874,00:00,2, .51,6.00
RECORD ID,CLIENT,CUSTOMER NAME,2870,01:65,1, .39,4.60
$

# 3  
Old 03-12-2007
Quote:
Originally Posted by mona
Hope this helps

Code:
$ awk -F"," '{gsub(/ .00/,"0.00",$7);gsub(/ .00/,"0.00",$8);print $1","$2","$3","$4","$5","$6","$7","$8}' tmp.txt
RECORD ID,CLIENT,CUSTOMER NAME,2883,12:05,8, 16.39, 191.34
RECORD ID,CLIENT,CUSTOMER NAME,2879,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2873,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2871,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2865,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2858,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2876,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2863,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2868,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2866,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2864,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2882,07:65, 11, 13.77, 160.80
RECORD ID,CLIENT,CUSTOMER NAME,2880,01:72,2,5.63, 65.76
RECORD ID,CLIENT,CUSTOMER NAME,2877,00:00, 18,4.63, 54.00
RECORD ID,CLIENT,CUSTOMER NAME,2874,00:00,2, .51,6.00
RECORD ID,CLIENT,CUSTOMER NAME,2870,01:65,1, .39,4.60
$ sed 's/ \.00/0.00/g' tmp.txt
RECORD ID,CLIENT,CUSTOMER NAME,2883,12:05,8, 16.39, 191.34
RECORD ID,CLIENT,CUSTOMER NAME,2879,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2873,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2871,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2865,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2858,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2876,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2863,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2868,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2866,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2864,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2882,07:65, 11, 13.77, 160.80
RECORD ID,CLIENT,CUSTOMER NAME,2880,01:72,2,5.63, 65.76
RECORD ID,CLIENT,CUSTOMER NAME,2877,00:00, 18,4.63, 54.00
RECORD ID,CLIENT,CUSTOMER NAME,2874,00:00,2, .51,6.00
RECORD ID,CLIENT,CUSTOMER NAME,2870,01:65,1, .39,4.60
$

thx, But I also need to replace like ".39" to "0.39" at last two fields..is it possible?
# 4  
Old 03-12-2007
Try this

Code:
sed -e 's/ \.00/0.00/g' -e 's/ \(\.[0-9]*\)/0\1/g' -e 's/,\(\.[0-9]*\)/0\1/g' tmp.txt

# 5  
Old 03-12-2007
Using awk


Code:
$ awk -F"," '{gsub(/ .00/,"0.00",$0);gsub(/ \./,"0.",$0);print $0}' tmp.txt
RECORD ID,CLIENT,CUSTOMER NAME,2883,12:05,8, 16.39, 191.34
RECORD ID,CLIENT,CUSTOMER NAME,2879,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2873,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2871,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2865,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2858,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2876,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2863,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2868,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2866,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2864,00:00,0,0.00,0.00
RECORD ID,CLIENT,CUSTOMER NAME,2882,07:65, 11, 13.77, 160.80
RECORD ID,CLIENT,CUSTOMER NAME,2880,01:72,2,5.63, 65.76
RECORD ID,CLIENT,CUSTOMER NAME,2877,00:00, 18,4.63, 54.00
RECORD ID,CLIENT,CUSTOMER NAME,2874,00:00,2,0.51,6.00
RECORD ID,CLIENT,CUSTOMER NAME,2870,01:65,1,0.39,4.60
$

# 6  
Old 03-13-2007
one more with sed,

Code:
sed 's/ ,/,/g;s/, /,/g;s/\(.*\),\(\.[0-9]*\),\(\.[0-9]*\)/\1, 0\2, 0\3/' filename

# 7  
Old 03-13-2007
Code:
awk -F"," -v OFS="," ' {$NF=sprintf("%0.2f",$NF); $(NF-1)=sprintf("%0.2f",$(NF-1)); print}' file

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Max amount of parameter

Hello everyone, I am trying to write a ksh script to accept user amount of parameters. so far I have written the following but, when I run the script it gives me the "i" back instead of the parameter's value. can anyone please tell me what I'm doing wrong. Thank you in advance:):) ... (9 Replies)
Discussion started by: Joveini
9 Replies

2. UNIX for Dummies Questions & Answers

Sum of an amount columns

Hi Friends.. I'm completely new to Unix and I need to write a program / script to sum amount columns in a .DAT file by using a configuration file to read the position of the columns. Could someone pls. help me on how to proceed? I've never written a program to read a configuration file and... (3 Replies)
Discussion started by: davinds
3 Replies

3. UNIX for Dummies Questions & Answers

Is it possible to grep a certain amount of characters?

I have a file similar to the following filler filler filler car 6 mazda filler filler filler filler car civic honda car rav 4 toyota filler filler If i do a "grep -i car file.txt" the output would be car 6 mazda car civic honda car rav 4 toyota however, i want to have the... (4 Replies)
Discussion started by: jl487
4 Replies

4. Shell Programming and Scripting

How to format sql result as amount - ksh

I am currently returning an sql result with a number value that I want to format as an amount. The sql runs smoothly on its own, but when run inside my ksh script an error is encountered: ERROR at line 3: ORA-01481: invalid number format model My sql is -- select distinct ... (6 Replies)
Discussion started by: avillanueva
6 Replies

5. Shell Programming and Scripting

How to format a character to look like an amount -solved

Hi All, I want to format the retrieved varchar2 value in the database to $9,999,999,990.00 but remained as a character value. Is it possible? Example: 378273.23 to $378,273.23 below is the code i want to implement: sqlplus -s ${USERNAME}/${PASSWORD}@${ORACLE_SID} << END1 >> $LOGFILE... (0 Replies)
Discussion started by: ryukishin_17
0 Replies

6. UNIX for Dummies Questions & Answers

count amount of accounts?

Hi, I am relatively new to Unix and trying to understand as much as I can. I would like to know if it's possible to count the total number of Unix accounts? If so, can the count be done from any working directory or does it have to be specific to where the accounts are based? Thanks! (4 Replies)
Discussion started by: Trogan
4 Replies

7. UNIX for Dummies Questions & Answers

amount of memory in my server

Hi all, is there any command that i can execute to find out the size of the harddisk and RAM on my server? Because i am not the SA, i do not have access to such infomation. (2 Replies)
Discussion started by: new2ss
2 Replies

8. UNIX for Dummies Questions & Answers

Amount of RAM (Memory)

How do i check/get the total amount of RAM, on a machine running UNIX? (4 Replies)
Discussion started by: samudimu
4 Replies

9. UNIX for Dummies Questions & Answers

How to get amount of memory installed.

Hi! I'm not a UNIX fanatic but I like using it for the Oracle database since it's not stable in the Windows NT environment (what is?). Problem: Is there any command to show me the amount of installed physical-memory in the machine? Is there some other way to show the processes which uses... (4 Replies)
Discussion started by: elgholm
4 Replies
Login or Register to Ask a Question