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}
 | |
| 
 | |
| 
 | 
