15 сообщений 15 7 спасибо за тему 7
Опции темы
На языке unix shell написать программу, которая переводит имена подкаталогов текущего каталога в с английского на немецкий, используя словарь вида:
english<space>german
Словоформы не учитывать.

С unix shell не работал.
Подскажите пожалуйста.
My project 21о93
www.vaz.ee/forum/topic30782.html
Habis

На языке unix shell написать программу, которая переводит имена подкаталогов текущего каталога в с английского на немецкий, используя словарь вида:
english<space>german
Словоформы не учитывать.

С unix shell не работал.
Подскажите пожалуйста.


А почему именно он ?
Может проще заюзать язык тот который знаешь, а шеллом только подставлять значение для перевода.
GSM: +372-51-33-013
BN6, увы требования преподавателя...
My project 21о93
www.vaz.ee/forum/topic30782.html
спс 3 Кто сказал спасибо BN6 Vityok Habis
Ну давай попробуем, чистый bash.
Создаем файл словаря
one ein
two zwei
three drei
four vier
five funf
six sechs
seven sieben
eight acht
nine neun
ten zehn


Теперь создадим англоименованные директории основываясь на словаре (словарь в файле dic)

mkdir $(cut --delimiter=' ' -f 1 < dic)


В коде выше мы читаем файл построчно < dic
Бьем строку на части по разделителю - пробел --delimiter=' '
И берем первую часть -f 1

Директории есть, можно убедиться через ls

Теперь переименовываем все директории по словарю, если не находим - выводим ворнинг

#!/bin/bash
for i in *; do
if [ -d "$i" ]; then
    if [ $i == $(grep $i dic | cut -d ' ' -f 1) ]; then
    mv $i $(grep $i dic | cut -d ' ' -f 2)
    else
    echo "The word $i wasn't found in the dictionary"
    fi
fi
done

Excuses are like assholes: everybody's got one
Теперь создадим англоименованные директории основываясь на словаре (словарь в файле dic)

Pugnator, данный файл dic, он локально хранится на диске? или в памяти крутится?
My project 21о93
www.vaz.ee/forum/topic30782.html
спс 1 Кто сказал спасибо Habis
Habis

Pugnator, данный файл dic, он локально хранится на диске? или в памяти крутится?


локально, запускай команду из той же папки где лежит файл или указывай полный путь к нему < /usr/home/dic
GSM: +372-51-33-013
Код несколько неоптимизирован. Поиск по словарб идет дважды. На маленьких словарях (до 20МБ) будет ок и не заметно.
Можно работать в два раза быстрее, если парсинг словаря идет только один раз и результат заносится в переменную
Excuses are like assholes: everybody's got one
Pugnator

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

"Длинная" переменная - должна вызвать утечку памяти или ошибаюсь?
Критерием истины - является практика ! (с)
---
Difficult we made yesterday impossible we are making now!
Agassy

"Длинная" переменная - должна вызвать утечку памяти или ошибаюсь?

Ну, во-первых, там будет храниться два слова плюс пробел; а во-вторых, bash имеет автоматический сборщик мусора.
Excuses are like assholes: everybody's got one
спс 3 Кто сказал спасибо Agassy Vladislav64 Habis
Pugnator

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




Кстати с днем программиста!!!! вы отмечаете праздник сегодня на 256 день)))
quattro в моде, при любой погоде :-)
Pugnator

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

ок! просто в свое время сталкивался с такой проблемой в Perl. при анализе больших текстов, скрипт в конце концов вешал систему - по причине не хватки памяти.
Помогла статья Утечки памяти в программах на Perl
Критерием истины - является практика ! (с)
---
Difficult we made yesterday impossible we are making now!
Agassy, там вообще ни какие ограничения не вводились?
My project 21о93
www.vaz.ee/forum/topic30782.html
Habis

Agassy, там вообще ни какие ограничения не вводились?

сорри, не совсем понял суть вопроса.
Критерием истины - является практика ! (с)
---
Difficult we made yesterday impossible we are making now!
Agassy

сорри, не совсем понял суть вопроса.

Ограничения на использование памяти.
My project 21о93
www.vaz.ee/forum/topic30782.html
Habis

Ограничения на использование памяти.

Нет, ограничений ни каких не было.

пс отыскался простенький перловый скрипт, на анализ существования строки (слова) в словаре, если подобная строка в словаре существует-ни чего не происходит, если отсутствует, то добвляем в конец словаря.
Может чем-нить пригодится...

($rf,$newwrd) = ($ARGV[0], $ARGV[1]);
# из комнд стр подается имя файла-словаря
# из комнд стр подается анализируемое слово

$rdy="C:\\!\\$rf";
print $newwrd,"\n";

open NW, "$rdy";
while ($line=<NW&gt;) {
if ($newwrd eq $line)
{$coun+=1;}
close (NW);
}
if ($coun eq "&quot;)
#добавляем новое слово в словарь
{open (NW, "+>>$rdy&quot;);
print NW "\n",$newwrd;}
Критерием истины - является практика ! (с)
---
Difficult we made yesterday impossible we are making now!

Войти, чтобы ответить.