Нужна помощ Shell (сабж)

Модератор: Модераторы разделов

Аватара пользователя
Gang
Сообщения: 106

Нужна помощ Shell

Сообщение Gang »

Здравствуйте!
В инсте препод задачку подсунул, кто разбирается помогите пожалуйста, у меня нет ни знаний ни времени (((
Написать shell-процедуру, которая выполняет действия:
читает содержимое файла, передаваемого в качестве первого параметра (в файле в
каждой строке представлено по три целых числа, разделенных пробелами);
проверяет правильность формата содержимого файла, при ошибках выводит
соответствующие сообщения и завершает работу;
подсчитывает сумму чисел в каждой строке файла;
сортирует полученные суммы по возрастанию и выводит их на экран;
подсчитывает и выводит на экран общую сумму.
Заранее благодарен!
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Нужна помощ Shell

Сообщение nesk »

Gang писал(а):
15.05.2007 14:12
Здравствуйте!
В инсте препод задачку подсунул, кто разбирается помогите пожалуйста, у меня нет ни знаний ни времени (((
Написать shell-процедуру, которая выполняет действия:
читает содержимое файла, передаваемого в качестве первого параметра (в файле в
каждой строке представлено по три целых числа, разделенных пробелами);
проверяет правильность формата содержимого файла, при ошибках выводит
соответствующие сообщения и завершает работу;
подсчитывает сумму чисел в каждой строке файла;
сортирует полученные суммы по возрастанию и выводит их на экран;
подсчитывает и выводит на экран общую сумму.
Заранее благодарен!

Это ж лаба по юниксу!
нефига! делай сам!
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Нужна помощ Shell

Сообщение sergeyvp »

nesk писал(а):
15.05.2007 14:15
Это ж лаба по юниксу!
нефига! делай сам!

Вот именно!
Тем более вся необходимая документация есть, и даже на русском!
http://linfoline.homedns.org/bash/abs-book.html
Спасибо сказали:
Аватара пользователя
Gang
Сообщения: 106

Re: Нужна помощ Shell

Сообщение Gang »

Эх, блин да времени нет ((
Ну лана попытаюсь )
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Нужна помощ Shell

Сообщение sergeyvp »

Gang писал(а):
15.05.2007 14:32
Эх, блин да времени нет ((

Так у студентов времени на учёбу никогда нет )))
Спасибо сказали:
Аватара пользователя
targeti
Сообщения: 45
ОС: Gentoo

Re: Нужна помощ Shell

Сообщение targeti »

Даааа, тему можно переносить в юмор :rolleyes:
---
упс, уже нельзя.
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Нужна помощ Shell

Сообщение Uncle_Theodore »

Если по теме сказать нечего, может, вообще ничего говорить не будем?
Для трепотни есть разделы про Разговоры и Флейм.
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: Нужна помощ Shell

Сообщение Subj »

Код: Выделить всё

$ 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

394
Building better software with Ada
Спасибо сказали:
Аватара пользователя
Gang
Сообщения: 106

Re: Нужна помощ Shell

Сообщение Gang »

sergeyvp писал(а):
15.05.2007 14:37
Так у студентов времени на учёбу никогда нет )))

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

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

Сообщение Uncle_Theodore »

Gang писал(а):
15.05.2007 21:42
Еще маленький вопросик, видел исходник в котором написано- если условие не выполнено то

Код: Выделить всё

echo "by-by-by" 1>&2
Что ето значит??

Это означает, что строка "бу-бу-бу" будет выведена в стандартный out и переадрессована в стандартный error. Немножко странная конструкция.
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: Нужна помощ Shell

Сообщение Subj »

Звиняюсь, там в конце не rm -f /tmp/sample а rm -f /tmp/tmp.sample должно быть (поправил). Хотя можно и без файлов всяких обойтись
Building better software with Ada
Спасибо сказали:
CrazyGooD
Сообщения: 1

Re: Нужна помощ Shell

Сообщение CrazyGooD »

Ребят было бы время сам бы успел написать и разобраться, но за семестр когда лабы 1 в две недели понять програмирование в shell не успеваю, при том сегодня зачет и надо здать эту задачу для получения зачета. Помогите пожалуйста.
Написать shell - процедуру, которая выполняет действия:
в заданном первым параметром каталоге находит все простые файлы, число ссылок на которые максимально, и удаляет их;
удаляет все пустые каталоги;
выдает на экран сообщения о каждом удаленном файле и каталоге.
Вариант 20
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Нужна помощ Shell

Сообщение watashiwa_daredeska »

Смотреть man find. Конкретно, чтобы Вам побыстрее искать было, условия -type (для фильтрования "простых" файлов), -empty, действия -delete, -printf (директивы форматирования %p или %P, %n). Для нахождения максимального элемента пригодятся sort, head.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Нужна помощ Shell

Сообщение Portnov »

iУведомление от модератора

Темы от студентов с запросами готовых решений по заданиям зарываются не глядя.

Закрыто.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали: