Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строки Перл, Подсчитать количество строк... 
V
    Опции темы
S8ORD
  Дата 13.5.2011, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2011

Репутация: нет
Всего: нет



Все это делается в Linux консоли, с Шеллом вот я разобрался, а перл понять, что-то не могу, буду очень благодарен за помощь!))
Подсчитать количество строк, содержащих заданное слово в заданном файле. Если файл имеет кодировку, отличную от заданной, подсчет не производить, а просто вывести сообщение об этом.

Формат вызова:

  команда слово кодировка файл1 файл2 файлN


Это сообщение отредактировал(а) S8ORD - 13.5.2011, 08:25
PM MAIL   Вверх
arto
Дата 13.5.2011, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



что такое "кодировка" ?
и что такое "слово" ?

Добавлено через 7 минут и 45 секунд
а еще проще -- напишите ваше решение на шелле
PM MAIL ICQ   Вверх
S8ORD
  Дата 14.5.2011, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2011

Репутация: нет
Всего: нет



Цитата(arto @ 13.5.2011,  12:13)
что такое "кодировка" ?
и что такое "слово" ?

Добавлено @ 12:21
а еще проще -- напишите ваше решение на шелле

#!/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=)))
PM MAIL   Вверх
arto
Дата 14.5.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



а оно правильно работает?

# cat > test
Русский Текст
^d
# file -i test
test: text/plain; charset=iso-8859-1
#
PM MAIL ICQ   Вверх
S8ORD
Дата 14.5.2011, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2011

Репутация: нет
Всего: нет



Цитата(arto @ 14.5.2011,  15:28)
а оно правильно работает?

# cat > test
Русский Текст
^d
# file -i test
test: text/plain; charset=iso-8859-1
#

ну да, после знака равно во втором поле извлекает кодировку, в этом случае кодировка будет 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
PM MAIL   Вверх
shamber
Дата 14.5.2011, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Цитата(S8ORD @  14.5.2011,  16:42 Найти цитируемый пост)
Ну так на Перл поможете сделать данное задание???

а зачем? оно же у вас на шелле работает.
PM MAIL Jabber   Вверх
S8ORD
Дата 15.5.2011, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2011

Репутация: нет
Всего: нет



Цитата(shamber @ 14.5.2011,  22:37)

а зачем? оно же у вас на шелле работает.

А это уже другой вопрос)))  ну момогите пожалуйстаsmile)))

Это сообщение отредактировал(а) S8ORD - 15.5.2011, 05:40
PM MAIL   Вверх
arto
Дата 15.5.2011, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



я записал в файл строку в кодировке koi8-r.
опознана она как iso-8859-1.

повторяю вопрос: оно правильно работает?
PM MAIL ICQ   Вверх
S8ORD
Дата 16.5.2011, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2011

Репутация: нет
Всего: нет



Цитата(arto @ 15.5.2011,  12:39)
я записал в файл строку в кодировке koi8-r.
опознана она как iso-8859-1.

повторяю вопрос: оно правильно работает?

да блин, iso-8859-1 это шрифт кодировки koi8-r все правильно работает, просто скажите, что переписать на перл не можете!
это же Linux Console, под Windoй все иначе

Это сообщение отредактировал(а) S8ORD - 16.5.2011, 09:56
PM MAIL   Вверх
arto
Дата 16.5.2011, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



"iso-8859-1 это шрифт кодировки koi8-r" -- 5 баллов! smile

зачем переписывать на чем либо заранее неработающее решение?

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 ?
может в консерватории что подправить?
PM MAIL ICQ   Вверх
S8ORD
Дата 16.5.2011, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2011

Репутация: нет
Всего: нет



Цитата(arto @ 16.5.2011,  11:12)
"iso-8859-1 это шрифт кодировки koi8-r" -- 5 баллов! smile

зачем переписывать на чем либо заранее неработающее решение?

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 ?
может в консерватории что подправить?

Чувак, забей!!! Просто переведи на Перл и все!! и пофиг то, что скрипт определяет кодировку текста))) мне лабу защитить надо последнюю))
PM MAIL   Вверх
arto
Дата 16.5.2011, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



perldoc Lingua::DetectCharset

зачитывание вслух документации -- 50€/hour.
написание за кого-то курсовых, дипломов етц -- приравнивается к зачитыванию вслух документации.
PM MAIL ICQ   Вверх
DBegunkov
Дата 16.5.2011, 17:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
S8ORD
Дата 16.5.2011, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2011

Репутация: нет
Всего: нет



Цитата(DBegunkov @ 16.5.2011,  17:05)
Насчет кодировки я не понял, а остальное можно, например, так:
#!/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";

Спасибо большое)) Остальное сам додумаюsmile)) +1))))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.