Chinaunix首页 | 论坛 | 博客
  • 博客访问: 569091
  • 博文数量: 79
  • 博客积分: 2513
  • 博客等级: 少校
  • 技术积分: 806
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-04 18:46
文章分类

全部博文(79)

文章存档

2014年(1)

2010年(5)

2009年(8)

2008年(11)

2007年(41)

2006年(13)

我的朋友

分类: LINUX

2009-03-28 00:46:29

    在 bash 下如何去除一个字符串首尾的空格(也就是 trim)呢?其实有一个简单的办法:

$ echo $STR

注意 $STR 不要带引号。因为 $STR 展开后,会作为 echo 的参数。那么 echo 在处理参数的时候,自然会忽略首尾的空格。不过此种方法有个小问题,那就是 echo 输出的结果,会将字符串中间的连续空格变成一个空格。例如 $STR 为 "   any    string    " 的话,那么输出将是 "any string"。

    既然这种方法有这么个小问题,我就想是否可以用其他办法。最后想到的还是用 grep 来做。如下:

$ echo "$STR" | grep -o "[^ ]\+\( \+[^ ]\+\)*"

用 "[^ ]+( +[^ ]+)*" 去匹配除首尾空格外的部分,然后 -o 仅输出匹配的部分,这样就达到去除首尾空格的效果了。
阅读(19085) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-29 11:36:56

没那么麻烦 比如 STR=" ABCD" echo $STR // 应该是: ABCD echo ${STR#* } //应该是:ABCD 注意*字符和后面的右大括号,有一个空格

chinaunix网友2009-04-09 10:32:23

好主意,谢谢~