Синтаксический анализ CSV для печати строки с наивысшей оценкой с использованием оболочки bash - PullRequest
2 голосов
/ 14 марта 2012

У меня есть CSV, подобный этому

Parameter Values,Count,% of Results
" david;dd@gmail.com;10300 "," 15 "," 50.0% "
" david;dd@gmail.com;12300 "," 15 "," 50.0% "
" davidk;dk@gmail.com;32300 "," 15 "," 50.0% "
" joe;joe@gmail.com;9200 "," 15 "," 50.0% "
" john;jj@gmail.com;1500 "," 15 "," 50.0% "

Я хочу получить строку с наибольшим значением числа, в данном случае 32300

Я уже пытался это сделать, но этоиспользует несколько команд

export max=$(awk -F, '{split($1,a,";"); print a[3] }' contestEntryTest.csv | tr -d ' "' | sort -nr | head -n 1) ; grep $max contestEntryTest.csv

Как я могу сделать выше, используя меньше команд или одну команду, как более опытный программист bash справится с вышеуказанной проблемой, просто для обучения.Ура!

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Вы можете использовать сортировку, если файл demo.csv, то

sort -t ';' -k3 -n demo.cvs|tail -n 1
1 голос
/ 14 марта 2012

Чистый способ сделать трюк:

awk -F"[; ]" '($4>v){v=$4}END{print v}' FILE
...