Column update


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Column update
# 1  
Old 04-12-2009
Column update

I have two files:

fileA
a,b,c,10,apple
a,b,c,20,orange
a,b,c,10,grape
d,e,f,5,pear
d,e,f,100,pear
x,y,z,15,lemon
x,y,z,20,apple
x,y,z,30,grape

fileB
a,b,c,20
d,e,f,100
x,y,z,30

If col1=col1,col2=col2 and col3=3 of fileA to fileB, then take value in 4th col of fileB and replace it in fileA...so I get this:

desired output:
a,b,c,20,apple
a,b,c,20,orange
a,b,c,20,grape
d,e,f,100,pear
x,y,z,30,lemon
x,y,z,30,apple
x,y,z,30,grape

is while within while my only option or does someone know an awk solution that can do this faster, especially if the files will be very large?

Thanks.
G
# 2  
Old 04-13-2009
So no one knows how to do this without a while of 20K records (fileB) with another 200K records (fileA)? Would be even better if someone knows how to just work with fileA and for each record in fileA apply the highest value in col4 to all records with identical first 1-3 columns (key) since that's all I'm using fileB is for right now.
# 3  
Old 04-13-2009
You can try this:

Code:
awk -F, 'NR==FNR{a[$1$2$3]=$4;next}
a[$1$2$3]{$4=a[$1$2$3]}
1' OFS="," fileB fileA

Use nawk or /usr/xpg4/bin/awk on Solaris.

Regards
# 4  
Old 04-13-2009
Wow! Thanks. This looks so simple compared to a while in a while. I'll give it a try and see. You rock!
# 5  
Old 04-13-2009
Franklin, can you explain a little about why / how this works?
I'm a little lost.
# 6  
Old 04-13-2009
Quote:
Originally Posted by quirkasaurus
Franklin, can you explain a little about why / how this works?
I'm a little lost.
Code:
awk -F, 'NR==FNR{a[$1$2$3]=$4;next}
a[$1$2$3]{$4=a[$1$2$3]}
1' OFS="," fileB fileA

Code:
NR==FNR{a[$1$2$3]=$4;next}

NR==FNR -> If we read fileB fill an element of an array a indexed with $1$2$3 with the value of $4

The other lines affect for fileA:

Code:
a[$1$2$3]{$4=a[$1$2$3]}

If the array has an index with the value $1$2$3 assign the value of the array to $4

Code:
1

Validated as true, the default action is to print the current line in the buffer similar to
Code:
{print}

Regards
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Update a column from a Join

Here is my select that I have to identify the child records that are Open (e.c7 < 6000) when the parent (t2068) c.c7 > 3 SELECT c.c1000000161, c.c7, c.c1000000019, e.c1000000829 FROM t2068 c INNER JOIN t1533 e ON e.c1000000829 = c.c301572100 where c.c7 > 3... (2 Replies)
Discussion started by: newborndba
2 Replies

2. Shell Programming and Scripting

Update All Column Value by 1 if exist

Guys, Running on Linux Ubuntu. I need to find a method to automatically update all the rows for 2 columns and only if the rows not null. e.g : based on the example data below, I want to update all rows under column 2 and 3 (COL2, COL3) with an increment of 1 and only if the value is not... (7 Replies)
Discussion started by: faizalms
7 Replies

3. Shell Programming and Scripting

Update a mysql column via bash script

Hello, I want to check the value of all MySQL columns.(column name is "status") via bash script. If value is "0" at I want to make only single column value to "1" I have many "0" values on mysql database(on "status" column) "0" means it is a draft post. I want to publish a post. I... (2 Replies)
Discussion started by: tara123
2 Replies

4. Programming

Column update using Informix

Hi, I am using INFORMIX 8 and trying to update column value by apending '09' to existing record . update sample_data_table set Name = Name||22 where id = 90 and state = NY This worked fine in oracle Database,But throwing error in informix . I need output as Ravi22 for Ravi record in... (0 Replies)
Discussion started by: Perlbaby
0 Replies

5. Shell Programming and Scripting

Update column in File

I Have a file a.txt in the below format 1 23 50 1 25 6666666666666 1 23 34 If the third column value is greater than two digit then make it 0 New Data File --------------- a.txt 1 23 50 1 25 0 1 23 34 Need your help regarding this (5 Replies)
Discussion started by: deep_kol
5 Replies

6. Shell Programming and Scripting

Add column and update file

I have to update my file from server file. Server file A on location serverfile="/orf/ddl/plokall/fileA" myfile=""/orf/ddl/plokall/myupdatedfile" fileA: KALKIKLOKPO001 10.1 HFJFKSLOKPO002 11.4 POLKAK5143 184.3 POLKJI5144 107.5 OKILDL5145 107.10 CVT0909 10.11 KJL0405... (3 Replies)
Discussion started by: asavaliya
3 Replies

7. Shell Programming and Scripting

Update file to add as last column

I need to update a text file within a loop so that the value is added creating a new column at the end. I cannot use paste because I dont know the number of files. If I use >> the value is added after the last row. Please help. For example: Input file: Column 1 Column2 - ... (2 Replies)
Discussion started by: Surabhi_so_mh
2 Replies

8. Web Development

Mysql question: Best way to update a column containing 8 million rows

Hi all, I was wondering if anyone knew a good/safe way to update a single column in a table that could contain upto 8 million rows... simple command like: UPDATE set blah=foo where bar=XXX; I will be running this on tables being written to and tables that have already been created. ... (3 Replies)
Discussion started by: muay_tb
3 Replies

9. Shell Programming and Scripting

Update a column value in csv files

Hi all I am new to scripting and i have an application from which i will export into a csv file as follows Column1, Column2, Column3 Sno1, Folder\Test.txt, Fail Sno2, Folder\Test1.txt, Pass Sno3, Folder\Test2.txt, Fail Now i need to change the column2 in all the rows from "Folder\" ... (1 Reply)
Discussion started by: rajeshrp
1 Replies

10. Shell Programming and Scripting

To update a column in a table through shell script

Hi All, I need to write a shell script in UNIX that should accept booking number as an argument and update it with value "NULL" if the transaction date is greater than 2 years. Booking number and transaction_date are the two columns of the table table_booking. Something like this, through... (3 Replies)
Discussion started by: shilpa_acc
3 Replies
Login or Register to Ask a Question