您的位置:首页 > 运维架构 > Shell

shell的字符串处理

2011-06-18 13:42 232 查看
#!/bin/bash

##########################################

#

# 演示bash中操作字符串的操作

#

# 后面是输出结果

#

##########################################

str="abc123abcABC"

# |-|

# |-------|

#计算字符串的长度

echo ${#str} #12

#位置参数有关操作

echo ${#*} #位置参数的个数

echo ${#@} #位置参数的个数和上面的效果一样

echo $* #把所有的位置参数作为一个字符串输出

echo $@ #效果同上

#字串截取

#

# ${string#substring}

# 从$string的左边第一个字符截掉第一个匹配的$substring

# ${string##substring}

# 从$string的左边第一个字符截掉最后一个个匹配的$substring

#

#从左边开始

echo ${str#a*c} #a到c的最短匹配

echo ${str##a*c} #a到c的最长匹配

#从右边开始

echo ${str%a*C} #从右边的最后一个字符开始寻找a到B的最短匹配

echo ${str%%a*B} #从右边最后一个字符开始寻找a到B的最长匹配

#这里找不到模式

#==取子串==

# ${string:position}

# ${string:positon:length}

#

echo ${str:2} #从第2个位置开始提取字符串的值

echo ${str:2:3} #从第2个位置开始提取长度为3个字符的值

#反向提取子串

echo ${str:(-2)} #从反向的第2个位置开始提取字符串

echo ${str:(-2):6} #从反向的第2个字符的位置开始提取长度为6个字符的串(:(不可能把)

#总共的字符长度只有2个怎么提取6个呢呵呵

echo ${str:(-6):3} #6个中提出3个总可以了把

#位置参数的提取

echo ${*:2} #从第二个位置参数开始提取后面所有位置参数的值

echo ${*:2:3} #从第二个位置参数开始提取3个位置参数的值

#=子串替换=

# ${string/substring/replacement}

# 使用$replacement来替换第一个匹配的$substring.

# ${string//substring/replacement}

# 使用$replacement来替换所有匹配的$substring.

#

# ${string/#substring/replacement}

# 如果$substring匹配$string的开头部分,那么就用$replacement来替换$substring.

# ${string/%substring/replacement}

# 如果$substring匹配$string的结尾部分,那么就用$replacement来替换$substring.

#

str1="123abcABCab12"

echo ${str1/12/hover} #仅仅替换了第一个

echo ${str1//12/hover} #替换了所有的

echo ${str1/#12/hover} # 从头开始匹配12,如果找到做替换

echo ${str1/%12/hover} # 从尾开始匹配12,如果找到做替换

转自:http://blog.csdn.net/zg_hover/archive/2008/12/15/3523303.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: