- sh - сгруппировать записи в файле, DearFriend, 23:02 , 14-Сен-09 (1)
cat filename | sort | uniq
- sh - сгруппировать записи в файле, Slavaz, 23:09 , 14-Сен-09 (2)
>Вобщем если бы файл №1 представлял собой таблицу БД, то >это можно было бы сделать при поможи простого запроса: >select cod_tovara, sum(summa), p_data from file_1 group by cod_tovata, p_data >Так вот вопрос: нет ли стандартной команды? такой я не нашел. >Как быть, циклами на awk "собрать" не проблем или есть способ лучьше? Наверное, тут только awk или perl. Чтобы работать как с SQL, можно либо unixODBC понять (пушкой по воробьям, но зато непосредственно работа через SQL с текстовым файлом); Либо конвертнуть файл в sqlite и потом работать с данными через SQL-запросы. Например, так: #!/bin/sh sqlite3 test.sq3 'create table file_1 (cod_tovara int, summa int, p_data timestamp)' sqlite3 test.sq3 "$(grep -P '^\d' text.txt | awk '{print "insert into file_1 values ("$1","$2","$3");"}')" ну и дальше уже приведенной Вами командой выгребаем нужные данные: sqlite3 test.sq3 "select cod_tovara, sum(summa), p_data from file_1 group by cod_tovara, p_data"
- sh - сгруппировать записи в файле, fics, 00:06 , 15-Сен-09 (3)
да это сильно уже замудрено в sqllite... Я просто имел введу, что есть, к примеру, команда join для склеивания, почти аналогичная sql-ой и может есть для такой задачи как в вопросе, а так да: uniq - c, получили количесво - повторный проходом awk '{$kol_vo*$sum}' > file
- sh - сгруппировать записи в файле, fics, 00:08 , 15-Сен-09 (4)
>> можно либо unixODBC понять (пушкой по воробьям, но зато непосредственно работа через SQL с текстовым файлом);Ага круто вы взяли, если бы я понял, уже сменил бы работу
- sh - сгруппировать записи в файле, Slavaz, 01:24 , 15-Сен-09 (5)
>>> можно либо unixODBC понять (пушкой по воробьям, но зато непосредственно работа через SQL с текстовым файлом); >Ага круто вы взяли, если бы я понял, уже сменил бы работу - можно либо unixODBC понять + можно либо unixODBC поднять Извините, ошибся. :) > да это сильно уже замудрено в sqllite... да нет. Две команды: первая создаёт БД, вторая команда - вкачивает данные. И дальнейшая работа с данными происходит через SQL-запросы. Сделать скрипт, "обвязывающий" данные SQLем - как два пальца :) Фактически, в предыдущем посту я уже написал скрипт. >>> Вобщем если бы файл №1 представлял собой таблицу БД, то >>> это можно было бы сделать при поможи простого запроса: >>> select cod_tovara, sum(summa), p_data from file_1 group by cod_tovata, p_data Это предложение я воспринял как условие задачи: "по-возможности, работать данными через SQL-команды". Если неправильно понял - сорри.
- sh - сгруппировать записи в файле, phpcoder, 09:31 , 15-Сен-09 (6)
coder@proger-ub5 ~ $ sort -n -k1,3 data.txt | uniq -c | awk '{printf("%d %d %d\n", $2, $1*$3, $4)}' 1 20 20090914 1 10 20090921 2 40 20090914 3 30 20090914
- sh - сгруппировать записи в файле, fics, 13:46 , 15-Сен-09 (7)
>coder@proger-ub5 ~ $ sort -n -k1,3 data.txt | uniq -c | awk >'{printf("%d %d %d\n", $2, $1*$3, $4)}' >1 20 20090914 >1 10 20090921 >2 40 20090914 >3 30 20090914 Это если суммы одинаковые, а если 1 10.9 20090921 да решил я свой вопрос, хотел просто за команду такую узнать и все. Спасибо.
|