Метод 1:
Oneliner:
s="hello"
for ((i=0;i<${#s};i++)); do result[$i]="${s:i:1}"; done
echo ${result[@]}
Расширенный код:
s="hello" # Original string.
for ((i=0;i<${#s};i++)); do # For i=0; i<(length of s); i++
result[$i]="${s:i:1}" # result[i] is equal to the i th character of $s
done # End of the loop
echo ${result[@]} # Print all elements of $result.
Метод 2:
Oneliner:
s="hello"
var=($(while read -n 1; do printf "$REPLY "; done <<< "$s"))
echo "${var[@]}"
Расширенный код:
s="hello" # Original string.
while read -n 1; do # Read chraracter by character the string.
space_separated=$(printf "$space_separated $REPLY") # $space_separated is equal to it plus the current character.
done <<< "$s" # Pass the string to the loop
result=($space_separated) # Split $space_separated into an array.
echo "${result[@]}" # Print all elements of $result.
Благодаря @Cuonglm Отказ
Эффективно, вы можете использовать $ Ответить
, который является изменением по умолчанию, где прочитает
.
Попробуйте следующее:
$ sort -t'[' -nk2 file1
cls_16_snap[2]
cls_16_snap[3]
cls_16_snap[20]
cls_16_snap[21]
cls_16_snap[22]
cls_16_snap[23]
cls_16_snap[24]
cls_16_snap[25]
cls_16_snap[26]
cls_16_snap[27]
cls_16_snap[28]
cls_16_snap[29]
cls_16_snap[30]
-n
option tell sort
для сравнения числовых, а не строковых.