# cat file
F 0
B A
H -12.33
# awk -vSEARCHVAR="B" -vOLDVAL="A" -vNEWVAL=10 '$1==SEARCHVAR && $2==OLDVAL{sub(OLDVAL,NEWVAL,$2)}1' file
F 0
B 10
H -12.33
PS: Please use [code] tags when you post code or data sample.
Your solution was not able for me. I can't to look the old value from a file every time i needs to change it. I must that the shell do it by itself. But thanks to it, finally I found with the solution:
# cat file
F 0
B A
H -12.33
# SEARCHVAR=B
# NEWVAL=10
# awk -vSEARCHVAR="$SEARCHVAR" -vNEWVAL="$NEWVAL" '$1==SEARCHVAR{$2=NEWVAL}1' OFS=\\t file
F 0
B 10
H -12.33
If that's what you want , you don't need to parse the file twice.