O que eu posso ver é que suas colunas são delimitadas por dois espaços.
com awk
:
awk -F '\s\s' '{print }'
Eu quero imprimir a coluna 1 deste arquivo. Eu usei este comando: awk '{print }'
, mas ele imprimiu a primeira palavra da primeira coluna.
DATA
ABC transporters ABC transporters
Alanine, aspartate and glutamate metabolism Alanine, aspartate
alpha-Linolenic acid metabolism alpha-Linolenic acid metabolism
Aminoacyl-tRNA biosynthesis Aminoacyl-tRNA biosynthesis
Amino sugar and nucleotide sugar metabolism Amino sugar and nucleotide
Arachidonic acid metabolism Arachidonic
Saída:
ABC
Alanine,
alpha-Linolenic
Aminoacyl-tRNA
Amino
Arachidonic
Saída desejada:
ABC transporters
Alanine, aspartate and glutamate metabolism
alpha-Linolenic acid metabolism
Aminoacyl-tRNA biosynthesis
Amino sugar and nucleotide sugar metabolism
Arachidonic acid metabolism
O que eu posso ver é que suas colunas são delimitadas por dois espaços.
com awk
:
awk -F '\s\s' '{print }'
Como esta parece ser uma coluna de largura fixa, você pode apenas cut
dos caracteres correspondentes. A coluna mais larga Alanine, aspartate and glutamate metabolism
parece ter 44 caracteres de largura, portanto:
$ cut -c1-44 foo
ABC transporters
Alanine, aspartate and glutamate metabolism
alpha-Linolenic acid metabolism
Aminoacyl-tRNA biosynthesis
Amino sugar and nucleotide sugar metabolism
Arachidonic acid metabolism
Como a segunda coluna obviamente repete o início da primeira coluna, considero isso como critério para o corte com sed
, portanto, não depende da largura da coluna:
sed 's/^\(.*\)\(.*\) $//'
O primeiro padrão é a parte repetida, com backreferenced como no final da linha. Você pode adicionar
;s/ *$//
para remover os espaços à direita se eles incomodarem você.
Com base na resposta de muru que a coluna é especificada com largura fixa, o comando egrep
com a opção -o
permitirá que você imprima apenas as partes correspondentes (não vazias) de uma linha correspondente especificada pelo padrão de pesquisa. Por padrão, no entanto, toda a linha será impressa.
$ egrep -o "^.{44}" foo