LINUX.ORG.RU

Сообщения rakuz

 

Как в awk правильно сравнивать не целые числа

Форум — General

Вот есть такой код:

awk ' 
    {
        c=0
        $0=$0","
        namep=0
        minc=0
        while ($0)  
        {
            match($0,/ *"[^"]*"*,|[^,]*,/)
            f=substr($0,RSTART,RLENGTH)             
            gsub(/^"?|"?,$/,"",f)
            ++c
            if (c==1)
                namep=f
            else if (c==2)
                minc=f
            else if (c>2)
            {
                if (minc>f)
                {
                    minc=f
                }
            }
        $0=substr($0,RLENGTH+1)      
        }
    print namep ": " minc
    }' Srednije_tseny_za_ijul_2018.txt

Отрабатывает хорошо. Парсит строку вида:

БРИТВА ЭЛЕКТРИЧЕСКАЯ,«89,42»,«92,74»,«84,38»,«104,98»,«65,63»,«79,97»,99

На выводе должны получить название и минимальную цену, но в итоге оказывается что 104,98 это минимум. При сравнении допустим 84,38 и 92,74 выбирает правильно 84,38. Но если уже сравнивается 104,98 и 84,38 меньшим оказывается 104,98.

Почему так? И как правильно это делать?

 , , ,

rakuz
()

Как распарсить строку через awk

Форум — General

Как распарсить строку, не могу понять. Только начинаю знакомиться с Linux и ее стандартными инструментами. Пытаюсь это сделать через awk. Строка вида:

Продовольственные товары,Свинина (кроме бескостного мяса),«6,32»,«5,95»,«5,96»,«5,89»,«6,36»,«6,51»,«6,37»

Продовольственные товары,«Куры (цыплята, включая бройлеров)»,«3,49»,«3,73»,«3,7»,«3,7»,«3,69»,«3,69»,«3,73»

Из нее достать названия и цены по полям, для дальнейшей обработки. Не могу понять, как правильно разделитель указать. Разделитель здесь запятая, но как видно она встречается и в самой строке. там где в строке запятая, строка дополнительно заключается в кавычки. Помогите, как правильно распарсить в данном случае?

 , ,

rakuz
()

RSS подписка на новые темы