Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> все символы в файле - bash 
:(
    Опции темы
Larrr
Дата 10.2.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

cat c.txt | ( x=0; while read lin; do echo "$lin" >> temp.txt ; x=`expr $x + 1` ; \
if [ $x -gt 100 ]; then cat temp.txt | sed 's/\(.\)/\1\n/g' | sort | uniq | \
perl -e 'while(<>){ $_ =~ s/\s*$//; print $_ ; }' > temp.txt ; fi ; done ; \
cat temp.txt | sed 's/\(.\)/\1\n/g' | sort | uniq | perl -e \
'while(<>){ $_ =~ s/\s*$//; print $_ ; }' )

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

Есть у кого-нибудь идеи, как его сделать быстрым, эффективным и красивым? smile
PM MAIL WWW ICQ   Вверх
bilbobagginz
Дата 10.2.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

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



  • я не понял задачу.
  • для начала сформатируй скрпт при помощи "каретки" и тега "Код", изпользуй синтаксис перла.
    а потом мы его прочитаем без вывиха роговичной мышцы smile
    ( если ты хочешь сделать очень длинную строку, но визуально раздробить ее, это делается посредством вставки "\", новой строки, и табулятора. после этого можно продолжать ту же строку)
    пример:
    Код

    # данное предложение:
    command1 \
    <tab>--flag1=value1\
    <tab>--flag2=value2;\
    <tab>command2 --flag3=value3
    # эквивалентно следующему:
    command1 --flag1=value1 --flag2=value2; command2 --flag3=value3
  • данное тобой решение - вовсе не баш, тут используются perl, sed.


пока.

Это сообщение отредактировал(а) bilbobagginz - 10.2.2006, 11:27


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Larrr
Дата 10.2.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



2bilbobagginz

1/ есть файл, в нем содержатся символы, например aaabbc - на выход надо подать a b c, то есть все символы, которые встретились в данном файле хотя бы однажды

2/ я несколько запутанно объяснила цель, прошу прощения - цель не исправить предложенный код, а предложить что-то другое.

3/буду внимательнее к терминологии, спасибо smile
PM MAIL WWW ICQ   Вверх
bilbobagginz
Дата 10.2.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

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



ок, теперь есть сомнения другого рода:
насколько мне понятно теперь, это домашка.. я правильно понимаю ?
если нет:
скажи что ты попробовала и что же вышло, и дальше пойдем думать в чем же проблема.
для начала хотелось бы знать
  • что за файлы придется скрипту обрабатывать ( какой величины )
  • все ли символы будут там встречаться
  • нужно ли экономить нагрузку на диск или процессор

а если же ДА, то этой домашке здесь не место, и мы ее перенесем.





--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Larrr
Дата 10.2.2006, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



нет, это не домашка
задачу я решаю потому, что мне надо как-то учиться программировать в линуксах - я придумываю задачи и пытаюсь их решать
эта задача тоже взята с потолка, поэтому в ней могут быть непонятки smile
Отвечаю на вопросы
-файлы содержащие текст + возможны какие-то дополнительные символы а-ля ?^#
-размер текстового файла ограничим 1Мб(в формате .txt)
-желательно экономить, но необязательно

Это сообщение отредактировал(а) Larrr - 10.2.2006, 22:53
PM MAIL WWW ICQ   Вверх
bilbobagginz
Дата 11.2.2006, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

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



а решения обязательно должно быть написано на bash ?!




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Larrr
Дата 11.2.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



немного bash, немного sed, немного awk, немного perl - это все что я знаю smile . Так что можно использовать любой из них.

PM MAIL WWW ICQ   Вверх
MAKCim
  Дата 11.2.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Код

#!/usr/bin/perl

if (@ARGV==1)
{
    open(MFILE,$ARGV[0]);
    @list=();
    $space=' ';
    while (<MFILE>)
    {
        @string=split('');
        foreach $i (@string)
        {
            $j=0;
            while ($j<@list && $i ne $list[$j]) {$j++;}
            if ($j==@list && $i ne $space) {push(@list,$i);}
        }
    }
    close(FILE);
    print @list;
}
else {print "Incorrect path!";}

поиск примитивный, скорее всего долгий при больших размерах файла, но зато понятный алгоритм smile


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

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


 




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


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

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