J'ai cette entrée:
sdkxyosl 1
safkls 2
asdf--asdfasxy_asd 5
dkd8k jasd 29
sdi44sw 43
asasd afsdfs 10
rklyasd 4
J'ai besoin de cette sortie:
sdi44sw 43
dkd8k jasd 29
asasd afsdfs 10
asdf--asdfasxy_asd 5
rklyasd 4
safkls 2
sdkxyosl 1
J'ai donc besoin de trier les lignes par la dernière colonne.
Je ne sais pas combien de colonnes sont sur une ligne.
Je n'arrive pas à comprendre comment le faire. Je n'ai pas de "pouvoirs perl". J'ai juste ~ des pouvoirs de script moyens avec sed, awk, cut, etc.
Quelqu'un sait-il comment le faire?
text-processing
sort
LanceBaynes
la source
la source
sort -k
. Labegfield
fonction de tri GNU compte à rebours jusqu'à zéro. Votre approche décorer-trier-décorer (DSU) semble être la meilleure façon, je pense.$NF,$RS
et non$NF,$0
? Je ne savais pas$RS
ça. (Je suppose que c'est équivalent à$NF,$"\n"
, ce qui fait la même chose, mais c'est aussi surprenant je pense.)$
peut être suivi de n'importe quelle expression. " L'effet de l'expression du numéro de champ évaluant autre chose qu'un entier non négatif n'est pas spécifié ". GNU awk (sur mon système) traite une chaîne comme"\n"
zéro. D'autres (par exemple l'implémentation d'origine par A, W et K) s'interrompent avec un message d'erreur. S'ilRS
s'avérait être un chiffre, vous obtiendriez le champ correspondant sur n'importe quelle implémentation. Alors ne faites pas ça, utilisez$0
.