bash 中 trim 字符串(去除首尾空格)

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

$ echo $STR

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

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

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

用 "[^ ]+( +[^ ]+)*" 去匹配除首尾空格外的部分,然后 -o 仅输出匹配的部分,这样就达到去除首尾空格的效果了。


原文地址:http://blog.chinaunix.net/uid-7448695-id-2626481.html

posted @ 2017-05-23 10:06  行走的思想  阅读(67)  评论(0编辑  收藏  举报  来源