欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

操作字符串命令(提取,消除,替换),字符串命令

来源: javaer 分享于  点击 47788 次 点评:228

操作字符串命令(提取,消除,替换),字符串命令


1.expr提取

格式:
expr match "$string" '$substring'
$substring 是一个正则表达式

expr "$string" : '$substring'
$substring 是一个正则表达式


从字符串开始的位置匹配字符串的长度,也即是算出这些匹配的字符串长度

写了个脚本测试
stringZ=abcABC123ABCabc
echo `expr match "$stringZ" 'abc[A-Z]*.2'`
echo `expr "$stringZ" : 'abc[A-Z]*.2'`

输出

 * 的意思是匹配0或多个正好在它之前的那个字符。例如正则表达式.*意味着能够匹配任意数量的任何字符。
如9*,那可以为空格 或9、99、999,因为*可以匹配0次

思考下以下出来的结果是多少
abc[A-Z]*.1
abc[A-Z]*..3


2.提取

${string:position:length}
在 string 中从位置$position 开始提取$length 长度的子串
写了个脚本测试
#!/bin/bash
stringZ=abcABC123ABCabc
echo ${stringZ:0}
echo ${stringZ:1}
echo ${stringZ:7}
echo ${stringZ:7:3}


3.子串削除

从左边削除
${string#substring}
从$string 的左边截掉第一个匹配的$substring
${string##substring}
从$string 的左边截掉最后一个个匹配的$substring


脚本测试
#!/bin/bash
stringZ=abcABC123ABCabc
echo "${stringZ#a*C}"
echo "${stringZ##a*C}"
输出
[root@ahaogege haha]# ./9.11.sh
123ABCabc
abc


"${stringZ#a*C}"
截掉'a'和'C'之间最近的匹配.
"${stringZ##a*C}"
截掉'a'和'C'之间最远的匹配


4.从右边削除 (#左边,%右边)
#号变成了%号
${string%substring}
从$string 的右边截掉第一个匹配的$substring
${string%%substring}
从$string 的右边截掉最后一个匹配的$substring


#!/bin/bash
stringZ=abcABC123ABCabc
echo "${stringZ%b*c}"
echo "${stringZ%%b*c}"

[root@ahaogege haha]# ./9.11.sh
abcABC123ABCa
a


5.子串替换

${string/substring/replacement}
使用$replacement 来替换第一个匹配的$substring.
${string//substring/replacement}
使用$replacement 来替换所有匹配的$substring.

[root@ahaogege haha]# more 9.11.sh
#!/bin/bash
stringZ=abcABC123ABCabc
echo "${stringZ/abc/xyz}"
echo "${stringZ//abc/xyz}"


[root@ahaogege haha]# ./9.11.sh
xyzABC123ABCabc
xyzABC123ABCxyz


6.子串替换
"${stringZ/abc/xyz}" 用'xyz'来替换第一个匹配的'abc'.
"${stringZ//abc/xyz}" 用'xyz'来替换所有匹配的'abc'.


${string/#substring/replacement}
如果$substring 匹配$string 的开头部分,那么就用$replacement 来替换$substring.
${string/%substring/replacement}
如果$substring 匹配$string 的结尾部分,那么就用$replacement 来替换$substring.

#!/bin/bash
stringZ=abcABC123ABCabc
echo "${stringZ/#abc/xyz}"       用'XYZ'替换开头的'abc'
echo "${stringZ/%abc/xyz}"      用'XYZ'替换结尾的'abc'

结果
[root@ahaogege haha]# ./9.11.sh
xyzABC123ABCabc
abcABC123ABCxyz

相关文章

    暂无相关文章

用户点评