awk -v OFS='\t' '$4 !~ /^[pm]iRNA/ { $4 = "rfam" } ; { $4 = $4 ; print }' file
Isso faz exatamente o que você pediu - se o campo 4 não corresponder ao regexp ^[pm]iRNA
, defina-o como rfam
. Em seguida, imprima a linha se foi alterada ou não.
Nota: configurei o Separador de campo de saída (OFS) como uma guia para garantir uma saída consistente e adicionei $4 = $4
antes da instrução de impressão (que tem o efeito colateral de fazer com que o separador de campo na linha de saída ser alterado para OFS) - caso contrário, as linhas que foram alteradas terão o OFS como padrão (um único espaço), enquanto as linhas inalteradas permanecerão inalteradas em relação ao arquivo original, o que pode fazer com que as colunas não sejam alinhadas corretamente quando vistas com em um terminal com cat
ou qualquer outra coisa.