Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # $1 - директория с исходными файлами $2 - их расширение
- # $3 - директория с файлами результата $4 - их расширение
- if [ ! -d "$1" ] || [ -z "$2" ] || [ -z "$4" ]; then #проверка расширений и директории
- exit
- fi
- if [ ! -d "$3" ] #проверка на существование директории
- then # если директрия не существует
- mkdir $3 # создаём её
- fi
- files=($1/*.$2) # маска для файлов с заданным расширением из выбранной директории
- if [ ! -f "$files" ] # проверяем существование файлов
- then
- exit # если файлы не найдены, завершаем выполнение
- fi
- filename="`date +"%Y%m%d%H%M%S"`.$4" # формируем имя файла
- i=0 # номер строки массива
- lines=() # 2-ый массив id сумма по проверенным строкам
- for file in ${files[@]} # перебираем полученные файлы
- do
- while read line # перебираем строки файла
- do
- number=0 # номер элемента в стоке
- sum=0
- for element in $line # перебираем элементы в стоке
- do
- let "number++"
- if [ $number -eq "1" ] # проверка порядкового номера элемента
- then
- id=$element # если элемент 1, то это id
- else
- let "sum += $element" # иначе суммируем
- fi
- done
- lines+=("$id $sum") # добавляем новую строку в массив
- k=0 # номер строки массива
- while (( k != i ))
- do
- if [[ -z ${lines[$k]} ]] # проверка на пустоту
- then
- let "k++"
- continue # возвращаемся в начало цикла
- fi
- c=${lines[$k]}
- massiv=( $c ) # копирование строки массива в буфферную переменную
- if [ $id -eq ${massiv[0]} ] # проверяем совпадение id
- then
- let sum+=${massiv[1]} # если совпал, то заносим новое значение суммы
- unset lines[$k] # сбрасываем значение
- fi
- lines[$i]="$id $sum" # обновляем информацию о сумме
- let k++
- done
- let "i++"
- done < "$file"
- done
- IFS=$'\n'
- sorted=($(sort -n «<"${lines[*]}"))
- unset IFS
- l=0 # номер строки массива
- while ((l != i))
- do
- if [[ ! -z ${sorted[$l]} ]]
- then
- echo "${sorted[$l]}" » "$3/$filename"
- fi
- let "l++"
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement