当前位置:Linux教程 - Linux综合 - bash中字符串的处理

bash中字符串的处理

1.得到字符串长度方法一:$echo ${#variable}code: PHP 代码: zhyfly: ~$ x="this is a test" zhyfly: ~$ echo ${#x} 14 方法二:$eXPr length "$variable"code: PHP 代码: zhyfly: ~$ x="this is a test" zhyfly: ~$ expr length "$x" 14 方法三:$expr "$variable" : ".*"code: PHP 代码: zhyfly: ~$ x="this is a test" zhyfly: ~$ expr "$x" : ".*" 14 2.查找字符串子串位置方法:$expr index "$variable" "substring"code: PHP 代码: zhyfly: ~$ x="this is a test" zhyfly: ~$ expr index "$x" "is" 3 zhyfly: ~$ expr index "$x" "t" 1 (ps:如果出现重复,好象只能查到第一个,第二个,第三个,...,怎么查到呢???)3.得到字符串子字符串方法一:$echo ${variable:position:length}code: PHP 代码: zhyfly: ~$ x="this is a test" zhyfly: ~$ echo ${x:1:5} his i 方法二:$expr substr "$variable" startposition lengthcode: PHP 代码: zhyfly: ~$ x="this is a test" zhyfly: ~$ expr substr "$x" 1 5 this (ps:注意方法一和方法二中位置的区别!)4.匹配正则表达式之匹配长度方法:$expr match "$x" "string"code: PHP 代码: zhyfly: ~$ x="this is a test" zhyfly: ~$ expr match "$x" "his" 0 zhyfly: ~$ expr match "$x" "this" 4 zhyfly: ~$ expr match "$x" "." 1 5.字符串的掐头去尾方法:$echo ${variable#startletter*endletter} # #表示掐头,因为键盘上#在$前面,一个表示最小匹配$echo ${variable##tartletter*endletter} 两个表示最大匹配$echo ${variable%startletter*endletter} # %表示去尾,因为键盘上%在$后面,一个表示最小匹配$echo ${variable%%startletter*endletter} 两个表示最大匹配code: PHP 代码: zhyfly: ~$ x="this is a test" zhyfly: ~$ echo ${x#t} his is a test zhyfly: ~$ echo ${x#t*h} is is a test zhyfly: ~$ echo ${x#t*s} is a test zhyfly: ~$ echo ${x##t*s} t zhyfly: ~$ echo ${x%t} this is a tes zhyfly: ~$ echo ${x%s*t} this is a te zhyfly: ~$ echo ${x%e*t} this is a t zhyfly: ~$ echo ${x%%i*t} th 6.字符(串)的替换方法:$echo ${variable/oldletter/newletter} #替换一个$echo ${variable//oldletter/newletter} #替换所有code: PHP 代码: zhyfly: ~$ x="this is a test" zhyfly: ~$ echo ${x/i/m} thms is a test zhyfly: ~$ echo ${x//i/m} thms ms a test

(出处:http://www.sheup.com)