#!/bin/bash file=$1 paste <(join -1 1 -2 2 -o 1.1 2.1 "$file" \ <(cut -f1,2 "$file" | sort -k2nr | nl | sort -k2) ) \ <( cut -f1,3 "$file" | sort -k2nr | nl | sort -k2 | cut -f1) #### #!/usr/bin/perl use warnings; use strict; use feature qw{ say }; # Read the input. my @input; while (<>) { push @input, [ split ]; } # Sort by columns, save the line number. my @output = map [ $_->[0] ], @input; for my $c (1, 2) { my $x = 1; $output[$_][$c] = $x++ for sort { $input[$b][$c] <=> $input[$a][$c] } 0 .. $#input; } # Print the line numbers using the original order. for my $l (0 .. $#input) { say join "\t", @{ $output[$l] }; } #### ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,