Converte duas linhas em duas colunas

0

Eu gostaria de converter cada duas linhas em duas colunas usando awk . Qualquer ajuda apreciada.

input.txt:

# Query: gi|11465907|ref|NC_001872.1| Chlamydomonas eugametos genome, complete genome
# 0 hits found
# Query: gi|11465922|ref|NC_000892.1| Pedinomonas minor genome, complete genome
# 1 hits found

output.txt:

Chlamydomonas eugametos genome 0
Pedinomonas minor genome 1
    
por jack 20.09.2014 / 06:10

2 respostas

2

Supondo que o seu arquivo de entrada é consistente:

awk -F'[|,]' '/genome/ {printf "%s ", $5; next} {print substr($1,3,1)}' input.txt > output.txt
Chlamydomonas eugametos genome 0
Pedinomonas minor genome 1
    
por 20.09.2014 / 06:33
2

Tente:

awk -F'[|] |,' '{getline p; split(p,H," "); print $2,H[2]}' file

O qual não precisaria de vírgulas adicionais nos campos | separados.

Um pouco mais robusto nesse sentido seria:

awk -F'[|] *' '{getline p; split($5,Q,","); split(p,H," "); print Q[1],H[2]}' file

Uma alternativa sed:

sed 'N; s/.*| *//; s/,.*\n#//; s/ hits found//' file
    
por 20.09.2014 / 12:03