У меня есть входной файл, который выглядит примерно так:
PlayerId,Name,Score1,Score2
1,A,40,20
2,B,30,10
3,C,25,28
Я хочу написать команду awk, которая проверяет игроков с суммой очков больше 50 и выводит PlayerId и PlayerName в отсортированном виде порядок их общей оценки.
Когда я пробую следующее:
awk 'BEGIN{FS=",";}{$5=$3+$4;if($5>50) print $1,$2}' | sort -k5
Это не работает и, похоже, сортирует их на основе их идентификаторов.
1 A
3 C
Принимая во внимание, что правильный результат, которого я ожидаю, будет следующим: (поскольку у игрока A сумма баллов = 60, а C имеет сумму баллов = 53, и мы хотим, чтобы результат был отсортирован в порядке возрастания)
3 C
1 A
Вдобавок меня немного смущает то, что я пытаюсь отсортировать его на основе score1, то есть столбца 3, но намереваюсь вывести только соответствующие идентификаторы и имена, это тоже не работает.
awk 'BEGIN{FS=",";}{$5=$3+$4;if($5>50) print $1,$2}' | sort -k3
И выводит:
1 A
3 C
Но если $ 3 относительно того, что данные сортируются, включены в печать,
awk 'BEGIN{FS=",";}{$5=$3+$4;if($5>50)print $1,$2,$3}' | sort -k3
Он производит правильный вывод (но включает нежелательный параметр score1 на дисплее)
3 C 25
1 A 40
Но что, если кто-то хочет распечатать только поля id и name?
На самом деле я новичок в командах awk и, вероятно, я не использую правильно отсортировать команду. Было бы очень полезно, если бы кто-нибудь мог объяснить.