2014-02-20 7 views
1

Я хотел бы получить имя человека, который имеет максимальный возраст в файле данных unix. Как я могу это сделать?Как получить имя человека, который имеет максимальный возраст, используя команды UNIX

Rob,20 
Tom,30 

Я пробовал это, как показано ниже, но это дает мне максимальный возраст.

awk -F"," '{print $2}' age.txt | sort -r | head -1 
+0

Научитесь использовать [gawk] (http://www.gnu.org/software/gawk) - т. Е. GNU awk. –

ответ

2
$ cat file | awk -F, '{print $2,$1;}' | sort -n | tail -n1 
30 Tom 
$ cat file | awk -F, '{print $2,$1;}' | sort -n | tail -n1 | awk '{print $2;}' 
Tom 
1

Попробуйте возможно

awk -F, '{if (maxage<$2) { maxage= $2; name=$1; };} END{print name}' \ 
     age.txt 
1

традиционны:

sort -t, -nr +1 age.txt | head -1 | cut -d, -f1 

POSIXy:

sort -t, -k2,2nr age.txt | head -n 1 | cut -d, -f1 
0

я думаю, что вы можете легко сделать Тхи с с помощью следующей команды

echo -e "Rob,20\nTom,30\nMin,10\nMax,50" | sort -t ',' -rk 2 | head -n 1 

enter image description here

Пожалуйста прокомментируйте в случае каких-либо проблем.