bash中字符串的处理

豆豆网   技术应用频道   2007年02月28日  【字号: 收藏本文

本文详细介绍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 length

  code:

  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 tes

责编:豆豆技术应用

正在加载评论...