The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
написать shell процедуру, !*! ksen9, 12-Ноя-11, 18:57  [смотреть все]
Написать shell-процедуру, которая:
•    Читает содержимое  двух файлов, передаваемых в качестве первых параметров  (в файлах в каждой строке представлено по одному целому числу);
•    Проверяет правильность формата содержимого файлов,  при ошибках выводит соответствующие сообщения и завершает работу;
•    Суммирует числа из первого и второго файлов, расположенные в строках с одинаковым номером;
•    Сортирует полученные суммы по возрастанию и выводит их на экран

с shell вообще не знакома,преподаватель не объяснил,как и что.Объясните пожалуйста как делать,если не пойму shell в течении месяца к экзамену не допустят((

  • написать shell процедуру, !*! Square, 19:34 , 12-Ноя-11 (1)
    > Написать shell-процедуру, которая:
    > • Читает содержимое  двух файлов, передаваемых в качестве первых параметров  
    > (в файлах в каждой строке представлено по одному целому числу);
    > • Проверяет правильность формата содержимого файлов,  при ошибках выводит соответствующие
    > сообщения и завершает работу;
    > • Суммирует числа из первого и второго файлов, расположенные в строках с
    > одинаковым номером;
    > • Сортирует полученные суммы по возрастанию и выводит их на экран
    > с shell вообще не знакома,преподаватель не объяснил,как и что.Объясните пожалуйста как
    > делать,если не пойму shell в течении месяца к экзамену не допустят((

    http://www.google.ru/search?hl=ru&source=hp&biw=1235&bih=402...

  • написать shell процедуру, !*! LSTemp, 13:40 , 26-Ноя-11 (2)
    > Написать shell-процедуру, которая:
    > • Читает содержимое  двух файлов, передаваемых в качестве первых параметров  
    > (в файлах в каждой строке представлено по одному целому числу);
    > • Проверяет правильность формата содержимого файлов,  при ошибках выводит соответствующие
    > сообщения и завершает работу;
    > • Суммирует числа из первого и второго файлов, расположенные в строках с
    > одинаковым номером;
    > • Сортирует полученные суммы по возрастанию и выводит их на экран
    > с shell вообще не знакома,преподаватель не объяснил,как и что.Объясните пожалуйста как
    > делать,если не пойму shell в течении месяца к экзамену не допустят((

    не ходите девки в армию!

    СКРИПТ:

    [root@local 222]# cat ./calc2file
    #!/bin/bash

    if [ ${#*} -ne 2 ]
    then
       echo "Usage: $0 file1 file2"
       exit
    else
       f1="$1"
       f2="$2"
    fi

    #f1="1.good"
    #f2="2.good"
    n1=""
    n2=""
    r=""
    f=""

    echo "file '$f1'"
    echo "====================="
    i=0
    while read n
    do
      c="${n//[[:digit:]]/}"
      echo -ne "\t$(($i+1)): "
      if [[ "${#c}" -eq 0 && "${#n}" -gt 0 ]]
      then
         echo -e "\t$n"
         n1[i]="$n"
      else
         echo -e "\terror: '$n' is not number"
         n1[i]='-'
         f=1
      fi
      i=$(($i+1))
    done < $f1
    echo "---------------------"
    echo "${#n1[*]}: ${n1[*]}"
    echo "====================="

    echo

    echo "file '$f2'"
    echo "====================="
    i=0
    while read n
    do
      c="${n//[[:digit:]]/}"
      echo -ne "\t$(($i+1)): "
      if [[ "${#c}" -eq 0 && "${#n}" -gt 0 ]]
      then
         echo -e "\t$n"
         n2[i]="$n"
      else
         echo -e "\terror: '$n' is not number"
         n2[i]='-'
         f=1
      fi
      i=$(($i+1))
    done < $f2
    echo "---------------------"
    echo "${#n2[*]}: ${n2[*]}"
    echo "====================="

    echo

    echo "'$f1' + '$f2'"
    echo "====================="
    if [[ -n "${f}" || "${#n1[*]}" -ne "${#n2[*]}" ]]
    then
       echo -e "\terror: wrong source data"
    else
       n="${#n1[*]}"
       for ((i=0; $i<$n ; i=$(($i+1))))
       do
         s[$i]=$((${n1[$i]}+${n2[$i]}))
         echo "${n1[$i]}+${n2[$i]}=${s[$i]}"
       done
    fi
    echo "====================="

    echo

    echo "sort"
    echo "====================="
    for n in ${s[*]}
    do
      echo "$n"
    done | /bin/sort
    echo "====================="

    ТЕСТОВЫЕ ФАЙЛЫ:

    [root@local 222]# cat ./1.good
    50
    40
    30
    20
    10

    [root@local 222]# cat ./2.good
    1
    2
    3
    4
    5

    [root@local 222]# cat ./1.bad
    10
    20
    30z

    40
      50  1
    60
    70


    [root@local 222]# cat ./2.bad
    1
    2
    3
    4z
    5


    ПРИМЕР РАБОТЫ:

    [root@local 222]# ./calc2file
    Usage: ./calc2file file1 file2

    [root@local 222]# ./calc2file 1.bad 2.bad
    file '1.bad'
    =====================
            1:      10
            2:      20
            3:      error: '30z' is not number
            4:      error: '' is not number
            5:      error: '' is not number
            6:      error: '' is not number
            7:      40
            8:      error: '50  1' is not number
            9:      60
            10:     70
            11:     error: '' is not number
            12:     error: '' is not number
            13:     error: '' is not number
    ---------------------
    13: 10 20 - - - - 40 - 60 70 - - -
    =====================

    file '2.bad'
    =====================
            1:      1
            2:      2
            3:      3
            4:      error: '4z' is not number
            5:      5
            6:      error: '' is not number
            7:      error: '' is not number
    ---------------------
    7: 1 2 3 - 5 - -
    =====================

    '1.bad' + '2.bad'
    =====================
            error: wrong source data
    =====================

    sort
    =====================
    =====================

    [root@local 222]# ./calc2file 1.good 2.good  
    file '1.good'
    =====================
            1:      50
            2:      40
            3:      30
            4:      20
            5:      10
    ---------------------
    5: 50 40 30 20 10
    =====================

    file '2.good'
    =====================
            1:      1
            2:      2
            3:      3
            4:      4
            5:      5
    ---------------------
    5: 1 2 3 4 5
    =====================

    '1.good' + '2.good'
    =====================
    50+1=51
    40+2=42
    30+3=33
    20+4=24
    10+5=15
    =====================

    sort
    =====================
    15
    24
    33
    42
    51
    =====================

    PS
    brut force


    • написать shell процедуру, !*! ksen9, 18:07 , 26-Ноя-11 (3)
      >[оверквотинг удален]
      > sort
      > =====================
      > 15
      > 24
      > 33
      > 42
      > 51
      > =====================
      > PS
      > brut force

      Я безмерно Вам благодарна!

    • написать shell процедуру, !*! ACCA, 09:25 , 28-Ноя-11 (4)
      > PS
      > brut force

      Иногда усердие превозмогает разум.


      #!/bin/bash

      LN=1
      paste $1 $2 | while read n1 n2 ; do
          expr $n1 + 0 >/dev/null 2>&1
          [ $? -gt 1 ] && echo Error in $1 line $LN: $n1 && exit 1
          expr $n1 + $n2
          [ $? -gt 1 ] && echo Error in $2 line $LN: $n2 && exit 1
          (( LN++ ))
      done | sort -n

      Если в $1 будет строка вроде
      1 2
      то будет ругаться на $2, что есть запланированый баг. Можно написать сложную проверку, а можно забить - никто не требовал, чтобы сообщение об ошибке было с именем файла, да ещё и было всегда без ошибки.

      • написать shell процедуру, !*! LSTemp, 00:21 , 02-Мрт-12 (5)
        >[оверквотинг удален]
        > in $2 line $LN: $n2 && exit 1
        >     (( LN++ ))
        > done | sort -n
        >

        > Если в $1 будет строка вроде
        > 1 2
        > то будет ругаться на $2, что есть запланированый баг. Можно написать сложную
        > проверку, а можно забить - никто не требовал, чтобы сообщение об
        > ошибке было с именем файла, да ещё и было всегда без
        > ошибки.

        Прошу прощения за некропост, но это - не усердие. это просто подход "надо вчера".




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру