![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| S8ORD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
Все это делается в Linux консоли, с Шеллом вот я разобрался, а перл понять, что-то не могу, буду очень благодарен за помощь!))
Подсчитать количество строк, содержащих заданное слово в заданном файле. Если файл имеет кодировку, отличную от заданной, подсчет не производить, а просто вывести сообщение об этом. Формат вызова: команда слово кодировка файл1 файл2 файлN Это сообщение отредактировал(а) S8ORD - 13.5.2011, 08:25 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
что такое "кодировка" ?
и что такое "слово" ? Добавлено через 7 минут и 45 секунд а еще проще -- напишите ваше решение на шелле |
|||
|
||||
| S8ORD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
#!/bin/bash slovo=$1 shift //извлекается заданное слово из команды kods=$1 shift // извлекается заданная кодировка из команды sum=0 while [ $# -ne 0 ] //организуется цикл для выделения параметров команды do //за каждую итерацию, т.е. происходит обработка файлов file=$1 //в этом цикле coding=`file -i "$file" | cut -f2 -d'='` //извлекается кодировка файла if [ "$coding" = "$kods" ] then for value in `cat $file` //подсчет слов в файле do if [ "$value" = "$slovo" ] then sum=$(($sum + 1)) fi done echo "В Файле $file - $sum слов соответствующих слову $slovo!!" else echo "Файл $file имеет кодировку $coding отличную от должной $kods!!!" fi shift done //Вот, такой скрипт на Shell=))) |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
а оно правильно работает?
# cat > test Русский Текст ^d # file -i test test: text/plain; charset=iso-8859-1 # |
|||
|
||||
| S8ORD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
ну да, после знака равно во втором поле извлекает кодировку, в этом случае кодировка будет iso-8859-1 а формат вызова команды будет команда iso-8859-1 слово файл1 файл2 файл3 в файлах будет искать слово, если они кодировку имеют не равную iso-8859-1 то ничего искать не будет, а выведет соответствующее сообщение! ну или для этого конкретного случая будет: # myscript iso-8859-1 Русский test Выдаст сообщение В Файле test - 1 слов соответствующих слову Русский!! Ну так на Перл поможете сделать данное задание??? Это сообщение отредактировал(а) S8ORD - 14.5.2011, 16:59 |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
||||
|
||||
| S8ORD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
А это уже другой вопрос))) ну момогите пожалуйста Это сообщение отредактировал(а) S8ORD - 15.5.2011, 05:40 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
я записал в файл строку в кодировке koi8-r.
опознана она как iso-8859-1. повторяю вопрос: оно правильно работает? |
|||
|
||||
| S8ORD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
да блин, iso-8859-1 это шрифт кодировки koi8-r все правильно работает, просто скажите, что переписать на перл не можете! это же Linux Console, под Windoй все иначе Это сообщение отредактировал(а) S8ORD - 16.5.2011, 09:56 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
"iso-8859-1 это шрифт кодировки koi8-r" -- 5 баллов!
зачем переписывать на чем либо заранее неработающее решение? ps: # cat | iconv -f koi8-r -t cp1251 > test Русский Текст # file -i test test: text/plain; charset=iso-8859-1 # cat | iconv -f koi8-r -t iso-8859-5 >| test Русский Текст # file -i test test: text/plain; charset=iso-8859-1 # cat | iconv -f koi8-r -t cp855 >| test Русский Текст # file -i test test: text/plain; charset=iso-8859-1 # cp1251, iso-8859-5, cp855 это тоже iso-8859-1 ? может в консерватории что подправить? |
|||
|
||||
| S8ORD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
Чувак, забей!!! Просто переведи на Перл и все!! и пофиг то, что скрипт определяет кодировку текста))) мне лабу защитить надо последнюю)) |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perldoc Lingua::DetectCharset
зачитывание вслух документации -- 50€/hour. написание за кого-то курсовых, дипломов етц -- приравнивается к зачитыванию вслух документации. |
|||
|
||||
| DBegunkov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 16.5.2011 Репутация: нет Всего: нет |
Насчет кодировки я не понял, а остальное можно, например, так:
#!/usr/local/bin/perl my $search_word=shift (@ARGV); my $kol_word=0; while (my $name_file=shift (@ARGV)) { open (FILE ,"<:encoding(cp1251)",$name_file); while (<FILE>) { while (/\b$search_word\b/g) {$kol_word++;} } close (FILE); } print "Word= $search_word kol=$kol_word \n"; Это сообщение отредактировал(а) DBegunkov - 16.5.2011, 17:18 |
|||
|
||||
| S8ORD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
Спасибо большое)) Остальное сам додумаю |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |