Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462

Обработка данных в линукс

06.09.2012, 14:56. Показов 3927. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо определенным образом обработать текстовые файлы.

Весь план действий:
1 Скачать 10 архивов с интернета, в каждом по текстовому файлу
2 распаковать
3 из каждой строки каждого файла выцепить первое слово до пробела-табуляции
4 среди всех этих слов выцепить только уникальные.
5 для каждого уникального слова послать запрос на веб сервер
6 из ответа сервера выцепить пару параметров для слова
7 в файл записать исходное уникальное слово + информация по нему с сервера (пп 5-6)

файлы в архивах весят по гигу примерно.
Первое слово в строке занимает 30-60% размера строки. всего 4 столбца в файле. 3 других это числовая статистика.
Уникальных слов (п 4) ожидается 300-1000 тыс.
Сервер в интернете выдаст информации примерно 3-5кб на слово.
И к сожалению данные находятся в середине конце страницы. но опять же трафик можно сэкономить до 2 раз, если остановить скачивание страницы через пару слов после определенной фразы, она стандартна и всегда пишется.

Надо минимизировать затраченное процессорное время на обработку данных.
Скорее всего придется делать енсколько промежуточных записей в файл.

например.
Распаковав 10 архивов, каждый из 10 файлов поочереди
1 sed ом выцепить каждое первое слово строки
2 uniq ом найти неповторяющиеся слова
Для кадого файла, вывод uniq дописывать во временный файл.
Затем временный файл повторно прогнать через uniq

Далее запрос к серверу и разбор ответа - процесс долгий, но не требовательный к ресурсам, и от компа время мало зависит.

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

Проц 2ядерный по 1.6ГГц

Сколько примерно потребуется время на выполнение данной задачи?
Желательно результат получить за пару дней обработки...

Добавлено через 10 минут
Дополнительно, в исходных файлах надо просуммировать 3 и 4 столбцы соответственно для каждого уни кального слова.
Суммы можно записывать либо одновременно, либо после пунктов 1-4.
Слова в исхоных файлах записаны по алфавиту, наверно удастся подсчитывать паралельно?


Желательно что бы обработкой занимался скрипт на bash.


Не прошу полной реализации, а просто подсказать как обработать данные побыстрее?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.09.2012, 14:56
Ответы с готовыми решениями:

Си/Си++/Линукс, тесты на тему управления памятью и работе с ос линукс, папками и каталогами
Создал его в гугл формах, там вопросы об управлении памятью и тест по работе с ос Линукс, папками и каталогами. Заранее благодарю всех...

Подскажите пожалуйста как правильно Grub в линукс Федоре настроить, чтобы ещё и второй линукс Мандриву можно было загружать.
КАк мне в линукс Федора в начальный загрузчик Grub вписать ещё второй линукс, чтобы при загрузки компа мне можно было бы выбирать между...

Обработка данных Excel документа, реально ли обработать такую структуру данных?
Добрый день. Посоветуйте ход решения задачи. Необходимо написать обработку которая будет экспортировать данные из Excel документа в базу...

34
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
06.09.2012, 23:48  [ТС]
Студворк — интернет-сервис помощи студентам
Уже какой-то результат=)
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ tail -15 file_0 | tr '[ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ]' '[ёйцукенгшщзхъфывапролджэячсмитьбю]'
яыѻѾ
яыѽѵ
яыя
яыяютёя
яэ
яэ
яэѾ
яю
яющ
яющѵѳѾ
яющѸѵёя
яющую
яя
яях
纄
Добавлено через 6 минут
Вот оно
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ tail -15 file_0 | sed 'y/ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/ёйцукенгшщзхъфывапролджэячсмитьбю/'
яыло
яыне
яыя
яыяются
яэ
яэ
яэо
яю
яющ
яющего
яющиеся
яющую
яя
яях
的
Добавлено через 17 секунд
громоздко, но работает

Добавлено через 11 минут
Так первая часть работы готова...
Теперь хотелось бы, просуммировать значения в 3 столбце по всем файлам, группировать значения по первому слову в строке...
тут уже совсем не знаю что делать...
на баше такое можно реализовать?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
07.09.2012, 00:15
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
на баше такое можно реализовать?
Да можно, почему нет )
0
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
07.09.2012, 11:40  [ТС]
Цитата Сообщение от Vourhey Посмотреть сообщение
Да можно, почему нет )
Кааак?)
потому что сам ничего пока не придумал...
Считать поидее долго будет...

И наверно надо было сразу об этом подумать, сильно уменьшило бы объем данных.
Надо из всех файлов выкинуть строки, в которых в первом слове встречается любой символ кроме букв...

Добавлено через 11 часов 13 минут
Для чистки исходных данных, после приведения слов в нижний регистр.
Bash
1
sed -e '/^[ёйцукенгшщзхъэждлорпавыфячсмитьбю]+\s/!d' file -i
0
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
09.09.2012, 19:51  [ТС]
Vourhey, так как посчитать сумму 3 столбца с группировкой по первому в баше?
Не поможешь?)
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
09.09.2012, 20:02
Наверное, как-нибудь так тоже можно. Только не баш, awk.
[vourhey@localhost bash]$ cat file.in
one col2 4
two col2 3
three col2 19
one col2 2
three col2 4
[vourhey@localhost bash]$ awk '{arr[$1]+=$3} END {for (i in arr) {print i,arr[i]}}' file.in
three 23
two 3
one 6
1
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
09.09.2012, 20:15  [ТС]
Спасибо.
0
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
10.09.2012, 23:33  [ТС]
Не удается по получившимся значениям отсортировать файл по убыванию числового значения второго столбца
ключ -r для команды sort отменяет ключ -k2n...
ничего не помогает...
Bash
1
2
3
| sort -r -k2n
| sort -rk2n
| sort --reverse -k2n
не суть как важно, но огорчает...
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.09.2012, 04:28
пример
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[guest@localhost ~]$ echo -e "5 2 3\n1 6 5\n3 4 7"
5 2 3
1 6 5
3 4 7
[guest@localhost ~]$ echo -e "5 2 3\n1 6 5\n3 4 7" | sort -rn -k1
5 2 3
3 4 7
1 6 5
[guest@localhost ~]$ echo -e "5 2 3\n1 6 5\n3 4 7" | sort -rn -k2
1 6 5
3 4 7
5 2 3
[guest@localhost ~]$ echo -e "5 2 3\n1 6 5\n3 4 7" | sort -rn -k3
3 4 7
1 6 5
5 2 3
[guest@localhost ~]$
1
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
11.09.2012, 13:10  [ТС]
Аааа....
А я то думал, как ключи комбинировать...
Будем знать...
0
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
18.09.2012, 23:30  [ТС]
Продолжим...
Скачиваниефайла по url c выводом в stdout ,без вывода сообщений
Bash
1
wget --output-document=- url -o /dev/null
как из этих данных вырвать 1кб после слова Описание:?

Добавлено через 27 минут
Слегка уточню. из ответа надо взять 61 строку...
Bash
1
| sed -n '61P'
Добавлено через 11 минут
Как в этой строке получить каждое слово стоящее после ": " и записать в файл через табуляции?

Добавлено через 29 минут
Сделал так
Bash
1
wget --output-document=- url -o /dev/null | sed -n '62q;61p' | sed 's/ \|<p>/ \n/g' | sed -n '/форма:/{n;p;}' | sed ':a; /$/N; s/ \n/ /; ta' | sed 's/^\(.*\)$/word\t\1/'
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
19.09.2012, 03:41
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Скачиваниефайла по url c выводом в stdout ,без вывода сообщений
Bash
1
wget -O - http://site 2>/dev/null
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Как в этой строке получить каждое слово стоящее после ": " и записать в файл через табуляции?
Code
1
2
3
4
5
6
7
8
9
[guest@localhost ~]$ echo "abc:def abc:ghi  abc:jkl" | sed '
> 
> s/^[^:]*//
> 
> s/:\([^[:space:]]*\)[^:]*/    \1/g
> 
> '
    def    ghi    jkl
[guest@localhost ~]$
1
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
19.09.2012, 15:04  [ТС]
Да, так гораздо лучше.
Но зачем обрезать начало строки?
Bash
1
echo "abc:def abc:ghi  abc:jkl" | sed 's/[^:]*:\([^[:space:]]*\)[^:]*/    \1/g'
так тоже работает

Добавлено через 18 секунд
да, куда короче моей записи)
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
20.09.2012, 04:23
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Но зачем обрезать начало строки?
оно не стоит после двоеточия
0
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
20.09.2012, 13:50  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
оно не стоит после двоеточия
логично, но я записал обе замены как одну. быстрее работать наврядли будет конечно...
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
21.09.2012, 02:09
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
но я записал обе замены как одну
у тебя на каждом шаге ищет символы до двоеточия, которых там определённо нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.09.2012, 02:09

Обработка данных через запросы SQL внутри приложения (виртуальная база данных)
Есть данные, которые с точки зрения удобства написания кода, проще всего обрабатывать запросами SQL. Возможно ли сделать это внутри...

Динамические поля и обработка данных базы данных (mdb)
У меня вопрос. Создал базу данных mdb Acceess. Там таблицы и запросы. В Delphi создал форму для работы с данными БД, форма содержит...

Обработка данных типа запись (комбинированный тип данных).
Вывести ФИО и отметки по физике студентов, имеющих средний балл, больше 4,5. Помоги пожалуйста.... Заранее спасибо)))

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

Обработка символьных данных.Множественные типы данных
Вставьте в слове после «кас» букву «а», если ее там нет.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru