Нужна помощ Shell (сабж)
Модератор: Модераторы разделов
-
Gang
- Сообщения: 106
Нужна помощ Shell
Здравствуйте!
В инсте препод задачку подсунул, кто разбирается помогите пожалуйста, у меня нет ни знаний ни времени (((
Написать shell-процедуру, которая выполняет действия:
читает содержимое файла, передаваемого в качестве первого параметра (в файле в
каждой строке представлено по три целых числа, разделенных пробелами);
проверяет правильность формата содержимого файла, при ошибках выводит
соответствующие сообщения и завершает работу;
подсчитывает сумму чисел в каждой строке файла;
сортирует полученные суммы по возрастанию и выводит их на экран;
подсчитывает и выводит на экран общую сумму.
Заранее благодарен!
В инсте препод задачку подсунул, кто разбирается помогите пожалуйста, у меня нет ни знаний ни времени (((
Написать shell-процедуру, которая выполняет действия:
читает содержимое файла, передаваемого в качестве первого параметра (в файле в
каждой строке представлено по три целых числа, разделенных пробелами);
проверяет правильность формата содержимого файла, при ошибках выводит
соответствующие сообщения и завершает работу;
подсчитывает сумму чисел в каждой строке файла;
сортирует полученные суммы по возрастанию и выводит их на экран;
подсчитывает и выводит на экран общую сумму.
Заранее благодарен!
-
nesk
- Сообщения: 2268
- Статус: Линукссаксовец
- ОС: MS Windows XP Home SP3
Re: Нужна помощ Shell
Gang писал(а): ↑15.05.2007 14:12Здравствуйте!
В инсте препод задачку подсунул, кто разбирается помогите пожалуйста, у меня нет ни знаний ни времени (((
Написать shell-процедуру, которая выполняет действия:
читает содержимое файла, передаваемого в качестве первого параметра (в файле в
каждой строке представлено по три целых числа, разделенных пробелами);
проверяет правильность формата содержимого файла, при ошибках выводит
соответствующие сообщения и завершает работу;
подсчитывает сумму чисел в каждой строке файла;
сортирует полученные суммы по возрастанию и выводит их на экран;
подсчитывает и выводит на экран общую сумму.
Заранее благодарен!
Это ж лаба по юниксу!
нефига! делай сам!
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
-
sergeyvp
- Сообщения: 807
- ОС: ubuntu
Re: Нужна помощ Shell
Вот именно!
Тем более вся необходимая документация есть, и даже на русском!
http://linfoline.homedns.org/bash/abs-book.html
-
Gang
- Сообщения: 106
Re: Нужна помощ Shell
Эх, блин да времени нет ((
Ну лана попытаюсь )
Ну лана попытаюсь )
-
sergeyvp
- Сообщения: 807
- ОС: ubuntu
Re: Нужна помощ Shell
Так у студентов времени на учёбу никогда нет )))
-
targeti
- Сообщения: 45
- ОС: Gentoo
Re: Нужна помощ Shell
Даааа, тему можно переносить в юмор 
---
упс, уже нельзя.
---
упс, уже нельзя.
-
Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Нужна помощ Shell
Если по теме сказать нечего, может, вообще ничего говорить не будем?
Для трепотни есть разделы про Разговоры и Флейм.
Для трепотни есть разделы про Разговоры и Флейм.
-
Subj
- Сообщения: 151
- Статус: Useful
- ОС: win
Re: Нужна помощ Shell
Код: Выделить всё
$ cat ./sample.sh
#!/bin/bash
if [ -z $1 ];then
echo "Usage: sample.sh file"
exit 0
fi
cat $1
echo
c=`cat $1|sed "s/ /\n/g"|sed "/^$/d"|wc -l`
n=`expr $c % 3`
if [ $c -eq 0 ];then
echo "File empty"
exit 0;
fi
if [ $n -ne 0 ];then
echo "Must be x x x"
exit 0
fi
if [ `echo -n $(cat $1)|sed "s/ //g"|sed "s/^[0-9]*$//g"` ];then
echo "Must be integer"
exit 0
fi
c=`cat $1|wc -l`
let gs=0
echo -n> /tmp/tmp.sample
for i in `seq 1 $c`;do
str=`sed "$i q;d" $1`
let s=0
for j in `seq 1 3`;do
let s=s+`echo $str|cut -d" " -f $j`
done
echo $s >>/tmp/tmp.sample
let gs=gs+s
done
sort -n /tmp/tmp.sample
echo
echo $gs
rm -f /tmp/tmp.sampleЗвиняюсь если где что не так (не эстетично там или не правильно работает), просто так написал от балды из интереса.
Код: Выделить всё
$ cat ./file
12 64 35
18 45 33
1 25 74
2 5 80
$ ./sample.sh file
12 64 35
18 45 33
1 25 74
2 5 80
87
96
100
111
394Building better software with Ada
-
Gang
- Сообщения: 106
Re: Нужна помощ Shell
Ну ребят если честно это вторая вышка, далеко не профилирующий предмет, а на работе завал .....
Subj писал(а): ↑15.05.2007 18:09Код: Выделить всё
$ cat ./sample.sh #!/bin/bash if [ -z $1 ];then echo "Usage: sample.sh file" exit 0 fi cat $1 echo c=`cat $1|sed "s/ /\n/g"|sed "/^$/d"|wc -l` n=`expr $c % 3` if [ $c -eq 0 ];then echo "File empty" exit 0; fi if [ $n -ne 0 ];then echo "Must be x x x" exit 0 fi if [ `echo -n $(cat $1)|sed "s/ //g"|sed "s/^[0-9]*$//g"` ];then echo "Must be integer" exit 0 fi c=`cat $1|wc -l` let gs=0 echo -n> /tmp/tmp.sample for i in `seq 1 $c`;do str=`sed "$i q;d" $1` let s=0 for j in `seq 1 3`;do let s=s+`echo $str|cut -d" " -f $j` done echo $s >>/tmp/tmp.sample let gs=gs+s done sort -n /tmp/tmp.sample echo echo $gs rm -f /tmp/sample
Звиняюсь если где что не так (не эстетично там или не правильно работает), просто так написал от балды из интереса.
Ух спасибо ща сижу разбираюсь ...
Еще маленький вопросик, видел исходник в котором написано- если условие не выполнено то
Код: Выделить всё
echo "by-by-by" 1>&2-
Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Нужна помощ Shell
Gang писал(а): ↑15.05.2007 21:42Еще маленький вопросик, видел исходник в котором написано- если условие не выполнено тоЧто ето значит??Код: Выделить всё
echo "by-by-by" 1>&2
Это означает, что строка "бу-бу-бу" будет выведена в стандартный out и переадрессована в стандартный error. Немножко странная конструкция.
-
Subj
- Сообщения: 151
- Статус: Useful
- ОС: win
Re: Нужна помощ Shell
Звиняюсь, там в конце не rm -f /tmp/sample а rm -f /tmp/tmp.sample должно быть (поправил). Хотя можно и без файлов всяких обойтись
Building better software with Ada
-
CrazyGooD
- Сообщения: 1
Re: Нужна помощ Shell
Ребят было бы время сам бы успел написать и разобраться, но за семестр когда лабы 1 в две недели понять програмирование в shell не успеваю, при том сегодня зачет и надо здать эту задачу для получения зачета. Помогите пожалуйста.
Написать shell - процедуру, которая выполняет действия:
в заданном первым параметром каталоге находит все простые файлы, число ссылок на которые максимально, и удаляет их;
удаляет все пустые каталоги;
выдает на экран сообщения о каждом удаленном файле и каталоге.
Вариант 20
Написать shell - процедуру, которая выполняет действия:
в заданном первым параметром каталоге находит все простые файлы, число ссылок на которые максимально, и удаляет их;
удаляет все пустые каталоги;
выдает на экран сообщения о каждом удаленном файле и каталоге.
Вариант 20
-
watashiwa_daredeska
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Нужна помощ Shell
Смотреть man find. Конкретно, чтобы Вам побыстрее искать было, условия -type (для фильтрования "простых" файлов), -empty, действия -delete, -printf (директивы форматирования %p или %P, %n). Для нахождения максимального элемента пригодятся sort, head.
Мои розовые очки
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Нужна помощ Shell
i Уведомление от модератора
Темы от студентов с запросами готовых решений по заданиям зарываются не глядя.
Закрыто.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru