免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2246 | 回复: 2
打印 上一主题 下一主题

bash中字符串的处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-04 10:28 |只看该作者 |倒序浏览

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

6.字符(串)的替换
方法:
$echo ${variable/oldletter/newletter} #替换一个
$echo ${variable//oldletter/newletter} #替换所有
code:
PHP 代码:
[color="#000000"]zhyfly[color="#007700"]: ~$ [color="#0000bb"]x[color="#007700"]=[color="#dd0000"]"this is a test"
[color="#0000bb"]zhyfly[color="#007700"]: ~$ echo ${[color="#0000bb"]x[color="#007700"]/[color="#0000bb"]i[color="#007700"]/[color="#0000bb"]m[color="#007700"]}
[color="#0000bb"]thms is a test
zhyfly[color="#007700"]: ~$ echo ${[color="#0000bb"]x[color="#ff8000"]//i/m}
[color="#0000bb"]thms ms a test
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/17928/showart_225911.html

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2013-05-23 10:31 |只看该作者
整理一下格式
1.得到字符串长度
方法一:
$echo ${#variable}

  1. zhyfly: ~$ x="this is a test"
  2. zhyfly: ~$ echo ${#x}
  3. 14
复制代码
方法二:
$expr length "$variable"

  1. zhyfly: ~$ x="this is a test"
  2. zhyfly: ~$ expr length "$x"
  3. 14
复制代码
方法三:
$expr "$variable" : ".*"

  1. zhyfly: ~$ x="this is a test"
  2. zhyfly: ~$ expr "$x" : ".*"
  3. 14
复制代码
2.查找字符串子串位置
方法:
$expr index "$variable" "substring"

  1. zhyfly: ~$ x="this is a test"
  2. zhyfly: ~$ expr index "$x" "is"
  3. 3
  4. zhyfly: ~$ expr index "$x" "t"
  5. 1
复制代码
(ps:如果出现重复,好象只能查到第一个,第二个,第三个,...,怎么查到呢???)

3.得到字符串子字符串
方法一:
$echo ${variable:position:length}

  1. zhyfly: ~$ x="this is a test"
  2. zhyfly: ~$ echo ${x:1:5}
  3. his i
复制代码
方法二:
$expr substr "$variable" startposition length

  1. zhyfly: ~$ x="this is a test"
  2. zhyfly: ~$ expr substr "$x" 1 5
  3. this
复制代码
(ps:注意方法一和方法二中位置的区别!)

4.匹配正则表达式之匹配长度
方法:
$expr match "$x" "string"

  1. zhyfly: ~$ x="this is a test"
  2. zhyfly: ~$ expr match "$x" "his"
  3. 0
  4. zhyfly: ~$ expr match "$x" "this"
  5. 4
  6. zhyfly: ~$ expr match "$x" "."
  7. 1
复制代码
5.字符串的掐头去尾
方法:
$echo ${variable#startletter*endletter} # #表示掐头,因为键盘上#在$前面,一个表示最小匹配
$echo ${variable##tartletter*endletter} 两个表示最大匹配
$echo ${variable%startletter*endletter} # %表示去尾,因为键盘上%在$后面,一个表示最小匹配
$echo ${variable%%startletter*endletter} 两个表示最大匹配

  1. zhyfly: ~$ x="this is a test"
  2. zhyfly: ~$ echo ${x#t}
  3. his is a test
  4. zhyfly: ~$ echo ${x#t*h}
  5. is is a test
  6. zhyfly: ~$ echo ${x#t*s}
  7. is a test
  8. zhyfly: ~$ echo ${x##t*s}
  9. t
  10. zhyfly: ~$ echo ${x%t}
  11. this is a tes
  12. zhyfly: ~$ echo ${x%s*t}
  13. this is a te
  14. zhyfly: ~$ echo ${x%e*t}
  15. this is a t
  16. zhyfly: ~$ echo ${x%%i*t}
  17. th
复制代码
6.字符(串)的替换
方法:
$echo ${variable/oldletter/newletter} #替换一个
$echo ${variable//oldletter/newletter} #替换所有

  1. zhyfly: ~$ x="this is a test"
  2. zhyfly: ~$ echo ${x/i/m}
  3. thms is a test
  4. zhyfly: ~$ echo ${x//i/m}
  5. thms ms a test
复制代码

论坛徽章:
48
15-16赛季CBA联赛之青岛
日期:2021-01-07 13:41:2315-16赛季CBA联赛之上海
日期:2020-12-01 18:02:0720周年集字徽章-20	
日期:2020-10-28 14:14:2620周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之天津
日期:2020-10-18 22:51:412016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2015-12-22 13:30:48操作系统版块每日发帖之星
日期:2015-12-07 06:20:00操作系统版块每日发帖之星
日期:2015-09-04 06:20:002015亚冠之德黑兰石油
日期:2015-08-05 18:46:082015年亚洲杯之巴勒斯坦
日期:2015-04-19 10:42:502015年亚洲杯之巴林
日期:2015-04-09 08:03:23
3 [报告]
发表于 2013-05-23 21:31 |只看该作者
谢谢分享~:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP