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
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
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
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