Assumindo que file1
contém o texto a ser substituído, file2
contém o texto de substituição, e você pode confiar no ID=
para realizar a pesquisa entre ambos, você pode usar esse script (mais popular, eu acho) awk :
awk -F'\t' '
NR==FNR{
a[$1]=$2 # fills the array a with the replacement text
next
}
$3=="gene"{ # check only lines with 'gene'
id=gensub("ID=([^;]*);.*","\1",1,$9); # extract the id string
if(id in a) # if the id is part of the array a
gsub(id,a[id]) # replace it
}
1 # print the line
' file2 file1