LINUX.ORG.RU

За 30% от твоей стипендии и 20% от будущей зарплаты я сделаю это за тебя. Потому что ты даже не пытался, иначе бы запостил не условия задачи, а пусть и не рабочий, но хоть какой-то свой код.

mord0d ★★★★★
()

например title.txt

$ cat title.txt
cat: title.txt: Нет такого файла или каталога

Где можно взять этот файл?

anonymous
()

топ-5 реферов

Это что?

anonymous
()
Ответ на: комментарий от anonymous

Взял бы но я студент у самого нету работы

LK15
() автор топика
Ответ на: комментарий от LK15

препад будит в шоке:

#!/usr/bin/bash

F=$1
N=$2

[ ! -f "$F" ] && echo -e "Usage: $0 <log_file> [rows]\nExample: $0 log.txt 10" && exit 1
[ -z $N ] && N=5

T=$(mktemp)

sed -r 's/\[/"/; s/]/"/; 
        s/\\"//g; 
        1 i Host x1 x2 Date Request Code Size Referer Browser' \
    "$F" > "$T"

echo "
.mode csv
.separator ' '
.import '$T' My
.mode table
    
WITH MostRef AS 
(
    SELECT 
        Referer,
        round(sum(Size)/1024, 1) AS KB
    FROM My 
    GROUP BY Referer 
    ORDER BY KB DESC 
    LIMIT $N
) 
SELECT
    row_number() OVER (ORDER BY KB DESC) AS №,
    *,
    round(100*KB/(SELECT sum(KB) FROM MostRef), 1) AS Процент 
FROM MostRef
;
" | sqlite3

rm "$T"

$ ./referer.sh log.txt
+---+-----------------------------------------------------------------+---------+---------+
| № |                             Referer                             |   KB    | Процент |
+---+-----------------------------------------------------------------+---------+---------+
| 1 | -                                                               | 56706.5 | 66.0    |
| 2 | http://www.example.org/example/When/200x/2006/09/29/Dynamic-IDE | 11059.0 | 12.9    |
| 3 | http://www.example.org/example/serif.css                        | 9086.0  | 10.6    |
| 4 | http://www.google.com/reader/view/                              | 5302.0  | 6.2     |
| 5 | http://www.example.org/example/                                 | 3824.0  | 4.4     |
+---+-----------------------------------------------------------------+---------+---------+

$ ./referer.sh log.txt 3
+---+-----------------------------------------------------------------+---------+---------+
| № |                             Referer                             |   KB    | Процент |
+---+-----------------------------------------------------------------+---------+---------+
| 1 | -                                                               | 56706.5 | 73.8    |
| 2 | http://www.example.org/example/When/200x/2006/09/29/Dynamic-IDE | 11059.0 | 14.4    |
| 3 | http://www.example.org/example/serif.css                        | 9086.0  | 11.8    |
+---+-----------------------------------------------------------------+---------+---------+

а для нормальных людей сущиствуют онализаторы логов, кста.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо что написал но не знаю подойдет ли это так как должны использоваться стандартные инструменты командной строки , как cut, paste, head, tail, cat, tac, wc, join, grep, sort, sed, uniq, awk, expr, и так далее

LK15
() автор топика
Ответ на: комментарий от LK15

да подойдёт, конечно. тут даже круче ведь, чем набор этих «костылей». немного подправил запрос — и любое задание из пдф готово.

в принципе, заданию из топика моё решение соответствует на 100%. второй раз решать мне уже не интересно. попробуй создать новый топик, только на этот раз приведи все ссылки на нужные файлы и скажи, что есть ограничение на используемые программы: можно пользоваться только утилитами из стандартного набора posix. может кто-то и захочет попрактиковаться.

у тебя вообще цель какая? сделать чтобы работало или научиться? если первое, то за деньги на любой фриланс-бирже или в местном разделе job тебе сделают, ещё и сахарком присыплют. если второе, то ты знаешь что нужно делать. а вот когда не будет получаться, тогда задавать конкретный вопрос на форуме, а не просить решить за тебя всю задачу. ок?

только когда будешь спрашивать, не замалчивай, а попытайся писать так, чтобы другие люди поняли, что именно тебе от них нужно. речь, ведь, для того и нужна, чтобы рассказывать другим про свои желания и мечты.

имей в виду, что это большая удача, когда кто-то берётся решать твои задачи за просто так.

anonymous
()
Ответ на: комментарий от anonymous

Хорошо понял Последняя просьба можешь обьяснить свой код например что делает echo в коде и т.д вкратце 5-6 слов для будущего

LK15
() автор топика
Ответ на: комментарий от LK15

что делает echo в коде и т.д вкратце 5-6 слов

echo выводит короткую справку по аргументам, если первый аргумент не указан, либо файл отсутствует. после того, как выведется короткая справка, exit завершает скрипт с ненулевым кодом.

если не указан второй аргумент — количество строк, то их выведется 5: N=5.

затем создаётся временный файл, в который записывается отредактированный с помощью sed лог: дата вместо квадратных скобок оборачивается в кавычки (квадратные скобки просто заменяются на кавычки); удаляются лишние экранированные кавычки; первой строкой добавляется заголовок «таблицы». после редактирования файл будет представлять собой валидный csv с пробелом в качестве разделителя.

отредактированный временный файл импортируется как csv во временную базу данных (бд создаётся в памяти) в таблицу My. перед импортом переключается режим субд sqlite на csv, устанавливается разделитель — пробел; после импорта режим бд снова меняется, но теперь на table, чтобы выводились красиво оформленные таблички.

затем следует очевидный sql-запрос к бд, начинающийся с WITH, который и формирует данные для таблички; табличка выводится, sqlite завершает на этом свою работу, освобождая занятую под бд память.

rm удаляет временный файл, который импортировался в sqlite.

очевидный sql-запрос

сам запрос я описывать уж не буду. даже при поверхностном знании sql его легко понять. если я его начну расписывать, то пятью—шестью словами дело точно не ограничится.

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