-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtrip
More file actions
64 lines (60 loc) · 2.32 KB
/
trip
File metadata and controls
64 lines (60 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/sh
#oxr 2025
# Elimina caracteres o unifica repeticiones en una cadena
#
# \\r trip [-u] [-p|-s|-m] varname chars (solo si se incluyo '. trip')
#
# \\r trip [-n] [-u] [-p|-s|-m] chars string
#
# '-u' Unifica en vez de eliminar
# '-n' Usar este modo a pesar de haber incluido el script
# '-p|-s|-m' Actua al principio ,final o en medio, por defecto toda la cadena
# 'varname' Modificara dicha variable
# 'chars' Caracteres a retirar
# 'string' Cadena a modificar y mostrar
#
# \\r user$ trip -u "⧵t" "/dev/sda1 ext3 ..."
# \\r /dev/sda1 ext3 ...
#
trip(){
#v variable - s comodin/resultado - u unificar - o opcion/comodin - c chars - w y z comodines
local trip_v="" trip_s="" trip_u=false trip_o="" trip_c="" trip_w="" trip_y="" trip_z=""
[ "$1" != "-n" ] || { shift ; trip_s="-n" ;}
[ "$1" != "-u" ] || { shift ; trip_u=true ;}
case "$1" in -p|-s|-m) trip_o=$1 ; shift ;; esac
[ $# -gt 1 ] || { infsh ~/code/trip 3 17 ; return ;}
[ ${0##*/} = trip -o "$trip_s" = "-n" ] && trip_c="$1" trip_s="$2" || {
trip_v=$1 trip_c=$2 ; eval trip_s=\$$trip_v ;
}
[ "$trip_c" != "\t" ] || trip_c=" " # convierte a tab real
$trip_u && trip_y="$trip_c$trip_c" || trip_y="$trip_c"
case $trip_o in
-p) until [ "$trip_s" = "${trip_s#$trip_y}" ] ; do
$trip_u && trip_s="$trip_c${trip_s#$trip_y}" || trip_s=${trip_s#$trip_y} ;
done ;;
-s) until [ "$trip_s" = "${trip_s%$trip_y}" ] ; do
$trip_u && trip_s="${trip_s%$trip_y}$trip_c" || trip_s=${trip_s%$trip_y} ;
done ;;
"") until [ "$trip_s" = "${trip_s#*$trip_y}" ] ; do
trip_o=${trip_s%%$trip_y*} trip_s=${trip_s#*$trip_y} ;
$trip_u && trip_s="$trip_o$trip_c$trip_s" || trip_s="$trip_o$trip_s" ;
done ;;
-m) trip_w="$trip_s" ;
until [ "$trip_w" = "${trip_w#$trip_c}" ] ; do
trip_w=${trip_w#$trip_c} ;
done ;
trip_w=${trip_s%$trip_w} trip_o="$trip_s" ;
until [ "$trip_o" = "${trip_o%$trip_c}" ] ; do
trip_o=${trip_o%$trip_c} ;
done ;
trip_o=${trip_s#*$trip_o} trip_s=${trip_s#$trip_w} trip_s=${trip_s%$trip_o}
until [ "$trip_s" = "${trip_s#*$trip_y}" ] ; do
trip_z=${trip_s%%$trip_y*} trip_s=${trip_s#*$trip_y} ;
$trip_u && trip_s="$trip_z$trip_c$trip_s" || trip_s="$trip_z$trip_s" ;
done ;
trip_s="$trip_w$trip_s$trip_o" ;;
esac
[ ${#trip_v} -eq 0 ] && echo "$trip_s" || eval $trip_v='$trip_s'
}
[ ${0##*/} != trip ] || trip "$@"
#