Search and replace field?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Search and replace field?
# 1  
Old 06-27-2012
Search and replace field?

I have 2 files A.txt and B.txt
A.txt 3 fields and separate by a comma
Code:
some,thing,florida
any1,thing1,california
some2,thing2,dallas
just,fun,kansas

B.txt has 8 fields and separate by a comma
Code:
what,ever,florida-state,,,,,,
some,one,dallas_state,,,,,,


You will see 3rd fields are the same but in B.txt have A 3rd field with a -state.
How do i get a new records C.txt
1. Replace 3rd field colummmn of A.txt with 3rd fields of B.txt
2. Only record match with B.txt in A.txt ==> C.txt
Code:
some,thing,florida-state
some2,thing2,dallas-state

Thanks for your replying

Last edited by Scrutinizer; 06-28-2012 at 05:07 AM.. Reason: code tags
# 2  
Old 06-28-2012
Code:
awk -F, 'FNR==NR{a[$3]=$0;next} {
split($3,b,"-")
for(i in a) {
if(i==b[1]) {
 print a[i]"-"b[2]
 break
}}}' a.txt b.txt

# 3  
Old 06-28-2012
Search and replace field???

Hi Exilir,


Code:
 
awk -F, 'FNR==NR{a[$3]=$0;next} {
split($3,b,"-")
for(i in a) {
if(i==b[1]) {
print a[i]"-"b[2]
break
}}}' a.txt b.txt
 
Here what value variable i of for loop have is this interger or strings like florida...?
If this is index then how variable know that it should ne string. As default variable always have value =0

Please clear this as I am always confused .. Possible pls explain whole code..

Last edited by krsnadasa; 06-28-2012 at 05:37 AM.. Reason: correcting problem statement
# 4  
Old 06-28-2012
If you don't know already, ALL arrays in awk are associative. The indices are used as strings. The following snippet will show you how:

Code:
awk 'BEGIN{a[1]="TEJESH";print a[1];print a["1"]}'

Both print staements will print the same value as both are referring to the same value.
# 5  
Old 06-28-2012
I keep getting error
'for reading (No such file or directory) A.txt FNR=10) fatal:cannot open`B.txt ???

---------- Post updated at 04:05 PM ---------- Previous update was at 01:38 PM ----------

I try to make it easier for me
1. Now i change the 3rd field in A.txt
Code:
awk -F',' '{print $1","$2","$3"-state";}' /home/logs/A.txt> /home/logs/A_temp.txt

and get A_temp.txt
Code:
some,thing,florida-state
any1,thing1,california-state
some2,thing2,dallas-state
just,fun,kansas-state

Now how do i compare with B.txt
Code:
what,ever,florida-state,,,,,,
some,one,dallas_state,,,,,,

and get C.txt
Code:
some,ever,thing,florida-state 
some2,one,thing2,dallas-state

---------- Post updated at 04:56 PM ---------- Previous update was at 04:05 PM ----------

I have to do Mickey mouse way and got the C.txt as i want
Code:
awk -F',' '{print $1","$2","$3"-state";}' /home/logs/A.txt> /home/logs/A_temp.txt
awk -F',' 'NR==FNR{f1[$3]=$0;next} ($3 in f1) {print f1[$3]"," $0}' /home/logs/A_temp.txt /home/logs/B.txt> /home/logs/B_temp.log

awk -F',' '{ print $5","$1","$2","$3}' /home/logs/B_temp.log > /home/logs/C.txt

How you make it simpler and not crazy like i did :-)
Thanks
# 6  
Old 06-29-2012
Search and replace field?

Hi Elixir,

Thanks.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search term in nth field and replace kth column

Hi, I have a text file which looks like this a.txt A,12,Apple,Red B,33,Banana,Yellow C,66,Sky,Blue I need to search for a particular field(s) in particular column(s) and for that matching line need to replace the nth column. Sample scenario 1: Search for 66 in second field and Sky in... (5 Replies)
Discussion started by: wahi80
5 Replies

2. UNIX for Dummies Questions & Answers

Search and replace the last field

Hi All, Seeking for your assistance on how to search and replace the last field/column. please see sample below: inputfile1.csv ="8923523434",="543623534"="afd23535623",="100"="200" ="8923523431",="543623536"="afd23535626",="101"="201"... (3 Replies)
Discussion started by: poginiks
3 Replies

3. Shell Programming and Scripting

Search for a value and replace other field in the same set

Hello friends, I have huge file with many sets where each "set" has few lines and each set always begins with "Set" in Sq brackets as shown above. # cat file1 (2 Replies)
Discussion started by: magnus29
2 Replies

4. Shell Programming and Scripting

Search field in text file and replace value

Hi there, First of all this is my first post here. Thank you in advance for your help. What I am trying to do is the following. I have a text file where each field of each row is separated by a tabulator. Looks like this: ATOM 1 N HSE A 26 3.033 -10.429 -2.262 1.00 17.07 ... (8 Replies)
Discussion started by: doom4
8 Replies

5. UNIX for Dummies Questions & Answers

Shell script for search and replace by field

Hi, I have an input file with below data and rules file to apply search and replace by each field in the input based on exact value or pattern. Could you please help me with unix script to read input file and rules file and then create the output and reject files based on the rules file. Input... (13 Replies)
Discussion started by: chandrath
13 Replies

6. Shell Programming and Scripting

awk search and replace in a targeted field instead of $0

Hi I would like to apply this gawk command: gawk '{$0=gensub(/\y+\y/,"","g"); print}' file not to the whole $0 but just to the part of $0 that is between: (a number)"> and </mrk> Is it possible? thanks for your help. (4 Replies)
Discussion started by: louisJ
4 Replies

7. Shell Programming and Scripting

Search a string,get line and replace with second field

Hi, I need to search for source path in file2 , as per file1 and if found get the next line and take the field value and put it in URL value of file1. In file1, NF is not same for all the lines. file1: <type source="/home/USER/Desktop" Dest="/home/USER/DIR1/Desktop" URL="ssh/path"/> <type... (8 Replies)
Discussion started by: greet_sed
8 Replies

8. Shell Programming and Scripting

Search duplicate field and replace one of them with new value

Dear All, I have file with 4 columns: 1 AA 0 21 2 BB 0 31 3 AA 0 21 4 CC 0 41 I would like to find the duplicate record based on column 2 and replace the 4th column of the duplicate by a new value. So, the output will be: 1 AA 0 21 2 BB 0 31 3 AA 0 -21 4 CC 0 41 Any suggestions... (3 Replies)
Discussion started by: ezhil01
3 Replies

9. Shell Programming and Scripting

Perl - search and replace a particular field

Hi, I have a file having around 30 records. Each record has 5 fields delimited by PIPE. Few records in the file having Junk characters in the field2 and field4. I found the junk charcter and I tested it and replace the junk with space with the command below perl -i -p -e "s/\x00/ /g"... (1 Reply)
Discussion started by: ramkrix
1 Replies

10. Shell Programming and Scripting

awk search and replace field

I am writing a c++ program that has many calls of pow(input,2). I now realize that this is slowing down the program and these all should be input * input for greater speed. There should be a simple way of doing this replacement throughout my file with awk, but I am not very familiar with awk.... (2 Replies)
Discussion started by: bluejayek
2 Replies
Login or Register to Ask a Question