116 lines
1.8 KiB
Text
116 lines
1.8 KiB
Text
pat1='str'
|
|
pat2='[^;]'
|
|
pat3='[[:alnum:]_]'
|
|
pat4='[[:alnum:]][[fu]b'
|
|
pat5='?tr'
|
|
pat6='?tr\'
|
|
pat7='[[:alnum:]]_'
|
|
pat8='*tr'
|
|
|
|
declare z="start"
|
|
declare NUM=1000
|
|
|
|
#----------------------------------
|
|
# create a long string with ';'
|
|
#----------------------------------
|
|
for ((i=0; i<$NUM; i++)); do
|
|
z="$z;string$i"
|
|
done
|
|
|
|
#z="$z;string;foo"
|
|
|
|
#------------------------------
|
|
# delete everything except ';'
|
|
#------------------------------
|
|
|
|
# try different patterns here
|
|
x="${z//$pat1}"
|
|
echo $x
|
|
x="${z//$pat2}"
|
|
echo $x
|
|
x="${z//$pat3}"
|
|
echo $x
|
|
x="${z//$pat4}"
|
|
echo $x
|
|
x="${z//$pat5}"
|
|
echo $x
|
|
x="${z//$pat6}"
|
|
echo $x
|
|
x="${z//$pat7}"
|
|
echo $x
|
|
x="${z//$pat8}"
|
|
echo $x
|
|
|
|
|
|
declare z="start"
|
|
declare NUM=1000
|
|
|
|
#----------------------------------
|
|
# create a long string with ';'
|
|
#----------------------------------
|
|
for ((i=0; i<$NUM; i++)); do
|
|
z="$z;string$i"
|
|
done
|
|
|
|
#z="$z;string;foo"
|
|
|
|
#------------------------------
|
|
# delete everything except ';'
|
|
#------------------------------
|
|
|
|
# try different patterns here
|
|
x="${z//[^;]}"
|
|
echo $x
|
|
x="${z/#[^;][^;]}"
|
|
echo $x
|
|
x="${z/%[^;][^;]}"
|
|
echo $x
|
|
|
|
export LANG=C LC_ALL=C LC_CTYPE=C
|
|
|
|
# try different patterns here
|
|
x="${z//$pat1}"
|
|
echo $x
|
|
x="${z//$pat2}"
|
|
echo $x
|
|
x="${z//$pat3}"
|
|
echo $x
|
|
x="${z//$pat4}"
|
|
echo $x
|
|
x="${z//$pat5}"
|
|
echo $x
|
|
x="${z//$pat6}"
|
|
echo $x
|
|
x="${z//$pat7}"
|
|
echo $x
|
|
x="${z//$pat8}"
|
|
echo $x
|
|
|
|
# try different patterns here
|
|
x="${z//[^;]}"
|
|
echo $x
|
|
x="${z/#[^;][^;]}"
|
|
echo $x
|
|
x="${z/%[^;][^;]}"
|
|
echo $x
|
|
|
|
# post-bash-4.3 changes to make pattern replacement honor nocasematch variable
|
|
unset string
|
|
string=abcd
|
|
|
|
shopt -s nocasematch
|
|
|
|
echo ${string//A/z}
|
|
echo ${string//BC/x}
|
|
echo ${string//[BC]/x}
|
|
echo ${string//[bC]/x}
|
|
echo ${string//?/z}
|
|
|
|
LC_ALL=C
|
|
echo ${string//A/z}
|
|
echo ${string//BC/x}
|
|
echo ${string//[BC]/x}
|
|
echo ${string//[bC]/x}
|
|
echo ${string//?/z}
|
|
|
|
|