Você poderia split o campo e usar substr por:
split($9, a, ";")
print substr(a[1], 4)
Os índices do Awk começam em 1 .
Outra opção poderia ser modificar o separador de campo de entrada ( FS ).
FS é espaço, "", por padrão - que também tem o efeito especial de ignorando
espaços iniciais e finais .
Além disso, em vez de usar print $1, \t, ... ou a variante printf , poderia
defina OFS como separador.
Exemplos:
Modificando FS:
awk -F" +|;|=" '
$3 == "gene" {
printf("%s\t%s\t%s\t%s\t%s\t%s\t\n",
$1, $4, $5, $10, $6, $7);
}
' data.file
Usando a divisão:
awk '
$3 == "gene" {
split($9, a, ";")
printf("%s\t%s\t%s\t%s\t%s\t%s\t\n",
$1, $4, $5, substr(a[1], 3), $6, $7);
}
' data.file
OFS e FS:
Separador do campo de saída ( OFS ) como separador e alternativa FS dentro do awk.
Também atualizou FS para incluir a guia:
awk '
BEGIN {
FS="[ \t]+|;|="
OFS="\t"
}
$3 == "gene" {
print $1, $4, $5, $10, $6, $7
}
' data.file
Veja também O grupo aberto Variáveis e variáveis especiais , Exemplos .
Manual do Gawk - geralmente é notado quando as coisas são uma extensão do awk para o awk.