String Length
-
${#string}
- expr length $string
- expr "$string" : '.*'
-
stringZ=abcABC123ABCabc echo ${#stringZ} # 15 echo `expr length $stringZ` # 15 echo `expr "$stringZ" : '.*'` # 15
Length of Matching Substring at Beginning of String
-
expr match "$string" '$substring'
-
$substring is a regular expression.
expr "$string" : '$substring'
-
$substring is a regular expression.
stringZ=abcABC123ABCabc # |------| echo `expr match "$stringZ" 'abc[A-Z]*.2'` # 8 echo `expr "$stringZ" : 'abc[A-Z]*.2'` # 8
Index
-
expr index $string $substring
-
Numerical position in $string of first character in $substring that matches.
stringZ=abcABC123ABCabc echo `expr index "$stringZ" C12` # 6 # C position. echo `expr index "$stringZ" 1c` # 3 # 'c' (in #3 position) matches before '1'.
This is the near equivalent of strchr() in C.
Substring Extraction
-
${string:position}
-
Extracts substring from $string at $position.
If the string parameter is "*" or "@", then this extracts the positional parameters, [1] starting at position.
${string:position:length}
-
Extracts $length characters of substring from $string at $position.
stringZ=abcABC123ABCabc # 0123456789..... # 0-based indexing. echo ${stringZ:0} # abcABC123ABCabc echo ${stringZ:1} # bcABC123ABCabc echo ${stringZ:7} # 23ABCabc echo ${stringZ:7:3} # 23A # Three characters of substring.
If the string parameter is "*" or "@", then this extracts a maximum of length positional parameters, starting at position.
echo ${*:2} # Echoes second and following positional parameters. echo ${@:2} # Same as above. echo ${*:2:3} # Echoes three positional parameters, starting at second.
expr substr $string $position $length
-
Extracts $length characters from $string starting at $position.
stringZ=abcABC123ABCabc # 123456789...... # 1-based indexing. echo `expr substr $stringZ 1 2` # ab echo `expr substr $stringZ 4 3` # ABC
expr match "$string" '($substring)'
-
Extracts $substring at beginning of $string, where $substring is a regular expression.
expr "$string" : '($substring)'
-
Extracts $substring at beginning of $string, where $substring is a regular expression.
stringZ=abcABC123ABCabc echo `expr match "$stringZ" '(.[b-c]*[A-Z]..[0-9])'` # abcABC1 echo `expr "$stringZ" : '(.[b-c]*[A-Z]..[0-9])'` # abcABC1 # Both of the above forms are equivalent.
Substring Removal
-
${string#substring}
-
Strips shortest match of $substring from front of $string.
${string##substring}
-
Strips longest match of $substring from front of $string.
stringZ=abcABC123ABCabc # |----| # |----------| echo ${stringZ#a*C} # 123ABCabc # Strip out shortest match between 'a' and 'C'. echo ${stringZ##a*C} # abc # Strip out longest match between 'a' and 'C'.
${string%substring}
-
Strips shortest match of $substring from back of $string.
${string%%substring}
-
Strips longest match of $substring from back of $string.
stringZ=abcABC123ABCabc # || # |------------| echo ${stringZ%b*c} # abcABC123ABCa # Strip out shortest match between 'a' and 'C', from back of $stringZ. echo ${stringZ%%b*c} # a # Strip out longest match between 'a' and 'C', from back of $stringZ.
Substring Replacement
-
${string/substring/replacement}
-
Replace first match of $substring with $replacement.
${string//substring/replacement}
-
Replace all matches of $substring with $replacement.
stringZ=abcABC123ABCabc echo ${stringZ/abc/xyz} # xyzABC123ABCabc # Replaces first match of 'abc' with 'xyz'. echo ${stringZ//abc/xyz} # xyzABC123ABCxyz # Replaces all matches of 'abc' with # 'xyz'.
${string/#substring/replacement}
-
If $substring matches front end of $string, substitute $replacement for $substring.
${string/%substring/replacement}
-
If $substring matches back end of $string, substitute $replacement for $substring.
stringZ=abcABC123ABCabc echo ${stringZ/#abc/XYZ} # XYZABC123ABCabc # Replaces front-end match of 'abc' with 'xyz'. echo ${stringZ/%abc/XYZ} # abcABC123ABCXYZ # Replaces back-end match of 'abc' with 'xyz'.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8503278/viewspace-890176/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8503278/viewspace-890176/