Como posso imprimir um valor único de uma determinada coluna e depois imprimir o resto das colunas na próxima linha

0

Eu quero fazer o processamento do arquivo tsv usando o awk, Aqui está minha entrada

scaffold1 1 100 scaffold1 101 200 scaffold1 201 300 scaffold2 1 100 scaffold2 201 500 scaffold3 10 500 scaffold4 10 300

Desired_output

Feature scaffold1 1 100 101 200 201 300 Feature scaffold2 1 100 01 500 Feature scaffold3 10 500 Feature scaffold4 10 300

Eu tentei usar uniq e sort e também awk para imprimir uniq da primeira coluna usando o comando %código% mas ele imprime todos os valores exclusivos da primeira coluna e, em seguida, eu posso imprimir o restante das colunas, mas eu quero imprimir primeiro valor único e descansar colunas na próxima linha, como mostrado acima.

Por favor, me diga que há uma maneira de fazer isso?

Obrigado

    
por Namrata Patel 03.01.2018 / 15:43

2 respostas

2

Usando awk :

awk '!seen[$1]++ {print "Feature",$1} {print $2,$3}' file
Feature scaffold1
1 100
101 200
201 300
Feature scaffold2
1 100
201 500
Feature scaffold3
10 500
Feature scaffold4
10 300
    
por 03.01.2018 / 15:48
0

Eu fiz isso usando combinação de sed e awk testado e seus trabalhos são bons

código:

for o in 'awk '{print $1}' example.txt| sort | uniq '; do sed -n "/$o/p" example.txt | sed "s/$o//g" |sed "1i Feature $o"; done  

saída

Feature  scaffold1
 1   100
  101 200
  201 300
Feature  scaffold2
  1   100
  201 500
Feature  scaffold3
  10  500
Feature  scaffold4
  10  300
por 03.01.2018 / 16:49

Tags