LINUX.ORG.RU

bash сортировка по повторениям

 , ,


0

3

Всем привет, долго думала и так и не получилось реализовать )))) Вообщем есть довольно большой файлик с содержимым например

T 11/14/2015 12.07: "Помидор" "Обезьяна"
T 11/14/2015 12.08: "Огурец" "Кот"
T 11/14/2015 12.10: "Помидор" "Кит"
и т.д.

Надо отсортировать столбик с овощами по повторениям, чтоб получилось

1 место - Помидор
2 место - Огурец


Сначала при помощи cut и tr приводишь к тому чтобы на одной строчке было одно слово, потом sort -n

maloi ★★★★★
()
awk -F\" '{for (i=2;i<=NF;i+=2) print $i}'
salsa
()
Ответ на: комментарий от darkenshvein

на баше? серьёзно? ну тогда подключи сед и авк

Сед? Серьезно? Не стесняйтесь тогда и Брэйнфак предложить.

АВК? Ну пишите разбор строки с закавыченными аргументами сами, если хотите.

Zmicier ★★★★★
()

На этот раз держите:

$ cat script
#!/bin/bash

declare -A -i vegs_count
declare -i rank=1

while read; do
    eval set -- "$REPLY"
    let vegs_count["$4"]++
done 

for veg in "${!vegs_count[@]}"; do
    printf '%d\t%s\n' "${vegs_count[$veg]}" "$veg"
done  |\
    sort --numeric --reverse |\
        while read veg_count veg; do
            (( veg_count < veg_count_prev 
                && rank++ ))
            printf '%d место — %s\n' "$rank" "$veg"
            let veg_count_prev=veg_count
        done

$ cat input
T 11/14/2015 12.03: "Тыква" "Пес"
T 11/14/2015 12.04: "Помидор" "Обезьяна"
T 11/14/2015 12.04: "Огурец" "Кот"
T 11/14/2015 12.07: "Помидор" "Кит"
T 11/14/2015 12.08: "Цветная капуста" "Пес"
T 11/14/2015 12.10: "Помидор" "Лось"
T 11/14/2015 12.12: "Тыква" "Муравей"

$ ./script < input
1 место — Помидор
2 место — Тыква
3 место — Цветная капуста
3 место — Огурец

А вообще домашние задания нужны для того, чтоб вы их решали сами.

Zmicier ★★★★★
()
Ответ на: комментарий от darktic

sort -k 4

Вообще мимо. Это лексикографическая сортировка. О том, что четвертое поле вида "Цветная капуста" будет разрезано по пробелу, даже молчу.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 2)

лол, в тред зашёл препод у ТС))

darkenshvein ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.