Это разрешения на файлы. Сначала разделите их на группы по три.
-w- rw- --x r-- -wx rwx
Теперь посчитайте разрешения в восьмеричной форме.
-w- = 0 + 2 + 0 = 2
rw- = 4 + 2 + 0 = 6
--x = 0 + 0 + 1 = 1
r-- = 4 + 0 + 0 = 4
-wx = 0 + 2 + 1 = 3
rwx = 4 + 2 + 1 = 7
Теперь у вас есть несколько чисел:
261 437
Надеюсь, это приблизит вас к кэшу.
Сначала разделите по запятым/пробелам, прокрутите результаты, затем разделите по тире, чтобы получить начало и конец диапазона:
$ cat ranges.sh
#!/bin/bash
IFS=', ' read -a ranges <<< "$*"
for range in "${ranges[@]}"; do
IFS=- read start end <<< "$range"
[ -z "$start" ] && continue
[ -z "$end" ] && end=$start
for (( i=start ; i <= end ; i++ )); do
echo "$i"
done
done
$ bash ranges.sh 1-3,5 9-10
1
2
3
5
9
10
Это может быть связано с лучшей проверкой работоспособности и т. д.
Попробуйте также
T="$@"
echo {1..100} | { cut -d" " -f"${T// /,}"; }
Придумал вариант Awk
awk -v RS='[[:blank:]]|[\n]|[,]' '{max=a[split($0, a,"-")]; if(max!=0){while(a[1]<=max){print a[1]++}}}' /tmp/a.txt
Чтение ввода с разделителями как записи, Разделение его на массив с помощью "-" Записи без "-" сохраняются в первом индексе Наконец печать значений.
Вход:
1-3,5 6
Выход:
1
2
3
5
6