По форуму искал. Честно. Может не по тем параметрам(или с руками чего), но искал.
итак, 2 задачи
Реализовать необходимо как shell скрипт
1.
В файле 4-ре столбца K1,K2,K3,K4 с цифрами(одинаковой высоты), разделенными знаками пробела , «,» или «;». Вывести в новый файл следующие столбцы K1 , K3 , K1-K3 , K2 , K2+K4 - 5 колонок разделенных пробелом . Знаки операций – операции над элементами столбцов в одинаковой строке .
2.
Дан файл с датами «dd.mm.yyyy 24h:mi:ss» - колонка дат. Найти минимальную , максимальную дату и разницу между ними в секундах. Можно считать , что все даты на менее 01.12.2006 00:00:00
Если это уже обсуждалось - дайте плиз ссылку или скажите по каким параметрам и где конкретно искать.
Заранее всем спасибо...
2 задачи (для меня сложные...)
Модератор: Модераторы разделов
-
- Сообщения: 614
Re: 2 задачи
Хорошие задачки.
Это Вам в институте задали?
выделение подстрок наверно удомне сделать с помощью awk (man awk)
а можно через cut
в первой задаче можно предварительно заменить все запятые и точки с запятой на пробелы (с помощью команды sed)
Это Вам в институте задали?
выделение подстрок наверно удомне сделать с помощью awk (man awk)
а можно через cut
в первой задаче можно предварительно заменить все запятые и точки с запятой на пробелы (с помощью команды sed)

-
- Сообщения: 5
- ОС: WinXP/Ubuntu7.10/SunOS
Re: 2 задачи
anonymous.ru, и на том спасибо, буду ковырятся в заданном направлении
-
- Сообщения: 782
- Статус: Задвинутый соучастник
Re: 2 задачи
Быть может окажется полезным (только там perl)
http://mydebianblog.blogspot.com/2007/09/blog-post_13.html
http://mydebianblog.blogspot.com/2007/09/blog-post_13.html
-
- Сообщения: 5
- ОС: WinXP/Ubuntu7.10/SunOS
Re: 2 задачи
Первую задачу сделал с помощью awk'а
с файлами криво конечно сделал, но работает!
А вот со второй задачей беда...
Код: Выделить всё
awk '{gsub(/,/," ");print}' $1 > file
awk '{gsub(/;/," ");print}' file > filetmp
awk '{print $1,$3,$1-$3,$2,$2+$4}' filetmp
с файлами криво конечно сделал, но работает!
А вот со второй задачей беда...
-
- Сообщения: 88
- ОС: Ubuntu
Re: 2 задачи
Первая задача:
Код:
eval 'exec perl -S $0 ${1+"$@"}' if 0;
open(INFILE,"<","file_input.txt");
open(OUTFILE,">","file_output.txt");
my($k1,$k2,$k3,$k4);
while(my $line=<INFILE>){
($k1,$k2,$k3,$k4)=split /[,;\s+]/,$line;
print OUTFILE join(' ',$k1,$k3,$k1-$k3,$k2,$k2+$k4),"\n";
}
close(INFILE,OUTFILE);
The pessimist says the glass is half empty.
The optimist says the glass is half full.
The engineer says the container is twice as large as it needs to be.
The physicist says the glass is neither. It is completely full, half with water, the other half with air.
The optimist says the glass is half full.
The engineer says the container is twice as large as it needs to be.
The physicist says the glass is neither. It is completely full, half with water, the other half with air.
-
- Сообщения: 5
- ОС: WinXP/Ubuntu7.10/SunOS
Re: 2 задачи
Здорово, спасибо!
А со второй?
Подскажите хоть в каком направлении мыслить...
А со второй?
Подскажите хоть в каком направлении мыслить...
-
- Сообщения: 88
- ОС: Ubuntu
Re: 2 задачи
Вот вторая задача (немножко коряво, но я старался
)

Код:
eval 'exec perl -S $0 ${1+"$@"}' if 0;
open(INFILE,"<","file_input.txt");
my %dates;
while(<INFILE>){
chomp;
/(\d+)\.(\d+)\.(\d+)\s+(\d+)
\d+)
\d+)/;
$dates{join(":",($3,$2,$1,$4,$5,$6))}=$_;
}
close INFILE;
my @sorted_dates=sort keys %dates;
print "Max date: $dates{$sorted_dates[$#sorted_dates]}\n";
print "Min date: $dates{$sorted_dates[0]}\n";
my($ymax,$monmax,$dmax,$hmax,$minmax,$smax)=split /:/,$sorted_dates[$#sorted_dates];
my($ymin,$monmin,$dmin,$hmin,$minmin,$smin)=split /:/,$sorted_dates[0];
print "Diff secs: ",((((($ymax-$ymin)*12+($monmax-$monmin))*30+($dmax-$dmin))*24+($hmax-$hmin))*60+($minmax-$minmin))*60+($smax-$smin),"\n";
The pessimist says the glass is half empty.
The optimist says the glass is half full.
The engineer says the container is twice as large as it needs to be.
The physicist says the glass is neither. It is completely full, half with water, the other half with air.
The optimist says the glass is half full.
The engineer says the container is twice as large as it needs to be.
The physicist says the glass is neither. It is completely full, half with water, the other half with air.
-
- Сообщения: 5
- ОС: WinXP/Ubuntu7.10/SunOS
Re: 2 задачи
Еще раз спасибо.
Только на Perl' мне непонятно ничего...
И выполнить наверное надо shell'овскими методами...

Только на Perl' мне непонятно ничего...
И выполнить наверное надо shell'овскими методами...
-
- Сообщения: 229
- ОС: Debian
Re: 2 задачи
Насчёт 2-й задачи. Читать можно с помощью read, парсить прочитанную строку - посредством parameter expansion (см. man bash). Вот, например, как можно достать секунды и минуты:
Код: Выделить всё
while read PARAM; do
SS="${PARAM##*:}"
MI="${PARAM%:*}"
MI="${MI#*:}"
echo SS: $SS " " MI: $MI
done
А ведь когда-то не боялись мы программы любой,
И с одним лишь debug'ом выходили на бой,
И искусно написанный вирус встречали как брата
И с одним лишь debug'ом выходили на бой,
И искусно написанный вирус встречали как брата