|
2 | 2 | #oxr 2025 |
3 | 3 | # Devuelve una porcion de una cadena |
4 | 4 | # |
5 | | -# \\r trim varname [-p|-s|posº] countº (solo si se incluyo '. trim') |
| 5 | +# \\r trim <varname> [-p|-s|posº] countº [--] <string> |
6 | 6 | # |
7 | | -# \\r trim [-n] [-p|-s|posº] countº string |
8 | | -# |
9 | | -# 'varname' Modificara dicha variable |
| 7 | +# 'varname' Modificara su valor o se le asignara la modificacion de 'string' |
10 | 8 | # '-n' Usar este modo a pesar de haber incluido el script |
11 | 9 | # '-p|-s|posº' Extrae del prefijo, sufijo(por defecto) o desde posº |
12 | 10 | # 'countº' nº de caracteres a extraer |
13 | | -# 'string' Cadena a recortar y mostrar |
| 11 | +# '--' Si 'string' es un numero |
| 12 | +# 'string' Cadena a utilizar. Se mostrara si no 'varname' |
14 | 13 | # |
15 | 14 |
|
16 | 15 |
|
|
19 | 18 |
|
20 | 19 | trim(){ |
21 | 20 | local trim_v="" trim_s="" o="-s" c="" n="" trim_x="" w="" |
22 | | -case $# in |
23 | | -0|1) infsh ~/code/trim 3 13 ; return ;; |
24 | | -2) isnum $1 && c=$1 o="-s" || { trim_v=$1 c=$2 ; shift ;} ; shift ;; |
25 | | -3) isnum $1 && n=$1 c=$2 || { [ ${1#-} = $1 ] && { |
26 | | - [ ${2#-} = $2 ] && trim_v=$1 n=$2 c=$3 || trim_v=$1 o=$2 c=$3 ; shift |
27 | | - } || o=$1 c=$2 ;} ; shift 2 ;; |
28 | | -4) [ ${1#-} = $1 ] || { [ ${2#-} = $2 ] && o=$1 n=$2 c=$3 || o="$1 $2" c=$3 ;} ; shift 3 ;; |
29 | | -*) o="$1 $2" n=$3 c=$4 ; shift 4 ;; |
30 | | -esac |
31 | | -o=${o#* } |
| 21 | +[ $# -gt 1 ] || { infsh ~/code/trim 3 12 ; return ;} |
| 22 | + |
| 23 | +isnum $1 || [ ${1#-} != $1 ] || { trim_v=$1 ; shift ;} |
| 24 | + |
| 25 | +isnum $1 && { |
| 26 | + isnum $2 && { n=$1 c=$2 ; shift 2 ;} || { c=$1 ; shift ;} |
| 27 | +} || { |
| 28 | + o=$1 c=$2 ; shift 2 |
| 29 | +} |
| 30 | +[ "$1" = -- ] && shift |
| 31 | + |
32 | 32 | [ $# -eq 0 ] && eval trim_s=\$$trim_v || trim_s="$@" |
33 | | -# echo ..TRIM=$trim_v..O=$o..N=$n..C=$c..S=$trim_s.. |
34 | | -# return |
| 33 | + |
35 | 34 | [ ${#n} -gt 0 ] && { |
36 | 35 | enum n $((n-1)) ; for n in $n ; do trim_s=${trim_s#?} ; done |
37 | 36 | n=${#trim_s} ; enum n $((n-c)) ; for n in $n ; do trim_s=${trim_s%?} ; done |
38 | 37 | } || { |
39 | 38 | n=${#trim_s} ; [ $c -le $n ] && c=$((n-c)) || c=0 |
40 | 39 | enum c $c ; for c in $c ; do trim_x=$trim_x"?" ; done |
41 | 40 | } |
| 41 | + |
42 | 42 | [ "$o" = "-p" ] && trim_s=${trim_s%$trim_x} || trim_s=${trim_s#$trim_x} |
43 | 43 | [ ${#trim_v} -eq 0 ] && echo "$trim_s" || eval $trim_v='$trim_s' |
44 | 44 | } |
|
0 commit comments