Com awk
, não tenho certeza se funcionará em Cygwin
$ awk '{ if(/^alt_id/){$0 = $0" "p} else{p = ""; for (i=2; i<=NF; i++) p = p" "$i} } 1' ip.txt
GO:0000001 mitochondrion inheritance
GO:0000002 mitochondrial genome maintenance
GO:0000003 reproduction
alt_id: GO:0019952 reproduction
alt_id: GO:0050876 reproduction
GO:0000005 obsolete ribosomal chaperone activity
GO:0000006 high-affinity zinc uptake transmembrane transporter activity
GO:0000007 low-affinity zinc ion transmembrane transporter activity
GO:0000008 obsolete thioredoxin
alt_id: GO:0000013 obsolete thioredoxin
GO:0000009 alpha-1,6-mannosyltransferase activity
- Para cada linha que não corresponda a
alt_id
no início da linha, use uma variável (p
) para salvar todas as colunas de duas em diante - Quando a linha corresponder a
alt_id
no início da linha, anexe o conteúdo da variávelp
à linha de entrada contida em$0
variable - O% final
1
é atalho para imprimir o conteúdo de$0