web-dev-qa-db-fra.com

Tri avec des outils Unix et plusieurs colonnes

Je cherche le moyen le plus simple de résoudre ce problème. J'ai un énorme ensemble de données que je ne peux pas charger dans Excel de ce type de format

This is a sentence|10
This is another sentence|5
This is the last sentence|20

Ce que je veux faire, c'est trier cela du plus petit au plus grand en fonction du nombre.

cat MyDataSet.txt | tr "|" "\t" | ???

Je ne sais pas quelle est la meilleure façon de le faire, je pensais à utiliser awk pour changer les colonnes et faire un tri, mais j'avais du mal à le faire.

Aidez-moi s'il vous plaît

26
josephmisiti
sort -t\| -k +2n dataset.txt

Devrait le faire. séparateur de champ et sélection de clé alternative

35
Seth Robertson

Vous n'avez généralement pas besoin de cat pour envoyer le fichier vers un filtre. Cela dit, vous pouvez utiliser le filtre sort.

sort -t "|" -k 2 -n MyDataSet.txt

Cela trie le fichier MyDataSet.txt en utilisant le | caractère comme séparateur de champ et tri numérique selon le deuxième champ (le nombre).

13
Javier C

avez-vous essayé de trier -n

$ sort -n inputFile
This is another sentence|5
This is a sentence|10
This is the last sentence|20

vous pouvez aussi changer les colonnes avec awk

$ awk -F"|" '{print $2"|"$1}' inputFile
10|This is a sentence
5|This is another sentence
20|This is the last sentence

combiner awk et trier:

$ awk -F"|" '{print $2"|"$1}' inputFile | sort -n
5|This is another sentence
10|This is a sentence
20|This is the last sentence

par commentaires

si vous avez des chiffres dans la phrase

$ sort -n -t"|" -k2 inputFile
This is another sentence|5
This is a sentence|10
This is the last sentence|20
this is a sentence with a number in it 2|22

et bien sûr, vous pouvez le rediriger vers un nouveau fichier:

$ awk -F"|" '{print $2"|"$1}' inputFile | sort -n > outFile
7
matchew

Essayez cette commande de tri:

sort -n -t '|' -k2 file.txt
3
anubhava

Triez par numéro, changez le séparateur et saisissez le deuxième groupe à l'aide du tri.

sort -n -t'|' -k2 dataset.txt
2
zellio