$ sort -t $'\t' -k 1rn,1 -k 2,2rn -k 3f,4 listaprezzi
2050 900 bananas 5
1905 700 grapes 17
250 4000 oranges 10
230 9200 figs 4
220 5000 lemons 10
200 8000 pears 8
Я хочу отсортировать 1-й столбец по listaprezzi
номерам в обратном порядке (опция rn
), 2-й также rn
, а третий по алфавиту ( f
). Какая правильная команда?
Я перепробовал много способов, но безуспешно.
решение1
Если я правильно понял ваш вопрос, вы хотите переупорядочить ваши данные, т.е. независимо отсортировать (вверх или вниз) разные поля одной и той же строки. Вы не можете сделать это с помощью bare sort
, вам нужно использовать дополнительные инструменты, например с помощью awk
и paste
вы можете написать следующее:
$ paste <(awk '{print $1}' listaprezzi | sort -nr) <(awk '{print $2}' \
listaprezzi | sort -nr) <(awk '{print $3}' listaprezzi | sort) <(awk \
'{print $4}' listaprezzi)
И результат
2050 9200 bananas 5
1905 8000 figs 17
250 5000 grapes 10
230 4000 lemons 4
220 900 oranges 10
200 700 pears 8