web-dev-qa-db-fra.com

Trier un fichier délimité par des tabulations en fonction de la commande de tri des colonnes bash

J'essaie de trier ce fichier en fonction de la quatrième colonne. Je souhaite que le fichier soit réorganisé en fonction des valeurs de la quatrième colonne.

Fichier:

2   1:103496792:A   0   103496792
3   1:103544434:A   0   103544434
4   1:103548497:A   0   103548497
1   1:10363487:T    0   10363487

Je veux que ce soit trié comme ceci:

1   1:10363487:T    0   10363487
2   1:103496792:A   0   103496792
3   1:103544434:A   0   103544434
4   1:103548497:A   0   103548497

J'ai essayé cette commande:

sort -t$'\t' -k1,1 -k2,2 -k3,3 -k 4,4 <filename>

Mais j'obtiens une erreur de nom de variable illégale. Quelqu'un peut-il m'aider avec ça?

19
Vignesh

Pour trier sur la quatrième colonne, utilisez simplement le -k 4,4 sélecteur.

sort -t $'\t' -k 4,4 <filename>

Vous pourriez également vouloir -V qui trie les nombres plus naturellement. Par exemple, produisant 1 2 10 plutôt que 1 10 2 (ordre lexicographique).

sort -t $'\t' -k 4,4 -V <filename>

Si vous obtenez des erreurs concernant le $'\t' puis assurez-vous que votre Shell est bash. Vous manquez peut-être #!/bin/bash en haut de votre script?

47
John Kugelman

Je crois que vous avez une erreur $ dans votre commande.

Essayer:

sort -t\t -nk4
4
Phylogenesis