Bash Arrays
Необходимо написать bash скрипт, который бы выполнял следующее:
1. Предложить ввести значения элементов массива, разделитель точка с запятой “;”
Например:
1;-3;500;550;-99999999;KKK;16;2
2. Удалить не числовые элементы массива
3. Вывести удаленные элементы на экран
3. Отсортировать оставшиеся элементы по возрастанию
4. Вывести значения отсортированных элементов на экран
Test Regular Expression:
https://regex101.com/r/aI5r1l/1
Solution:
read -p "Input array, delimiter ';' => " input declare -a array=( ` echo $input | tr ";" "\n" ` ) declare -a numbers=( ` printf '%s\n' ${array[*]} | grep -e '^-\?[0-9]\+$' ` ) echo Deleted elements: printf '%s\n' ${array[*]} | grep --invert-match -e '^-\?[0-9]\+$' declare -a sorted=( ` printf '%s\n' ${numbers[*]} | sort -n ` ) echo Sorted numbers: printf '%s\n' ${sorted[*]}
Output:
Input array, delimiter ';' => 1;-3;500;550;-99999999;KKK;16;2 Deleted elements: KKK Sorted numbers: -99999999 -3 1 2 16 500