В общем, хранить такие данные не очень хорошо, если вы можете их избежать, потому что люди всегда путают табуляции и пробелы.
Решение вашей проблемы очень просто на языке сценариев, таких как Perl, Python или Ruby. Вот пример кода:
#!/usr/bin/perl -w
use strict;
my $sort_field = 2;
my $split_regex = qr{\s+};
my @data;
push @data, "7 8\t 9";
push @data, "4 5\t 6";
push @data, "1 2\t 3";
my @sorted_data =
map { $_->[1] }
sort { $a->[0] <=> $b->[0] }
map { [ ( split $split_regex, $_ )[$sort_field], $_ ] }
@data;
print "unsorted\n";
print join "\n", @data, "\n";
print "sorted by $sort_field, lines split by $split_regex\n";
print join "\n", @sorted_data, "\n";