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.