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

$ echo $STR

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



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

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

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

转自:

http://blogold.chinaunix.net/u/24581/showart_1882388.html

以下相关信息:

常用的 grep 选项有:

-c 只输出匹配行的个数。

-i 不区分大小写(只适用于单字符)。

-h 查询多文件时不显示文件名。

-l 查询多文件时只输出包含匹配字符的文件名。

-n 显示匹配行及行号。

-s 不显示不存在或无匹配文本的错误信息。

-v 显示不包含匹配文本的所有行。

-V 显示软件版本信息

使用grep匹配时最好用双引号引起来,防止被系统误认为参数或者特殊命令,也可以匹配多个单词。

例如:

grep -n "^$" test.txt 显示输出空行的行号

bash 中 trim 字符串(去除首尾空格) - grep 去空行的更多相关文章

  1. Python中常见字符串去除空格的方法总结

    Python中常见字符串去除空格的方法总结 1:strip()方法,去除字符串开头或者结尾的空格>>> a = " a b c ">>> a.s ...

  2. as3中去掉字符串两边的空格,换行符

     as3 去掉字符串两边的空格,换行符,方法一  ActionScript Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20   pub ...

  3. java 编写函数将字符串的首尾空格删除。

    String 类有个方法去除字符串首位空格: str.trim(); 查看源代码: public String trim() { int len = value.length; ; char[] va ...

  4. C++ 去掉字符串的首尾空格和全部空格

    #include <iostream>#include <string>using namespace std; //去掉收尾空格string& ClearHeadTa ...

  5. js实现trim() JS去掉首尾空格 JS去掉两头空格

    function trimStr(str){ return str.replace(/(^\s*)|(\s*$)/g,""); } 用的时候就是直接 var 变量=trimStr( ...

  6. js去除首尾空格

    简单的:str = jQuery.trim(str); var temp = " aa b "; console.log("cc" + temp); temp ...

  7. Bash中的字符串变量扩展

    1.向尾部方向的最小化删除 (%) $pathname="/usr/bin/local/bin"$echo ${pathname%/bin*}/usr/bin/local 2.向尾 ...

  8. java.lang.String里面的trim()方法——删除首尾空格

    结果如图 package com.softeasy.test1; public class String_trim { public static void main(String[] args) { ...

  9. C/C++实现删除字符串的首尾空格

    StdStringTrimTest.cpp #include <iostream> int main() { std::string str(" 字符串 String " ...

随机推荐

  1. ie7下z-index失效问题解决方法

    绝对定位元素的“有定位属性(relative或absolute)的父元素”在渲染层次时起到了主要作用,前面的被后面的覆盖了.解决办法就是给有定位属性的父元素设置z-index 解决办法: 父级元素加上 ...

  2. css中字间距调整(转)

    css中字间距调整 (2014-01-02 13:51:07) 标签: 汉字 英文 间距 letter-spacing word-spacing 杂谈 分类: 网页制作 汉字间字间距设置:letter ...

  3. 242. Valid Anagram 两个串的最基础版本

    [抄题]: Given two strings s and t, write a function to determine if t is an anagram of s. For example, ...

  4. Blender 软件 四视图布局的创建方法

    Blender 软件 四视图布局的创建方法 我使用的Blender版本:Blender V 2.77 Q: 为什么要创建一个:四视图布局场景? A: 原因1:四视图布局最适合模型建模.原因2:在 Bl ...

  5. CF 671D Roads in Yusland

    弄完之后点进去一看,竟然是div1的D题……最近真是天天被题虐哭 推荐这一篇博客 https://www.cnblogs.com/Sakits/p/8085598.html 感觉讲清楚了,也是基本照着 ...

  6. jdbc--1 一些方法的封装

    今日内容介绍1.JDBC2.DBUtils====================================================================1 JDBC概念和数据 ...

  7. git仓库迁移的解决方案

    一.问题 在github中遇到感兴趣的项目,直接克隆下来,随着兴趣越来越浓,在本地做了些修改,后来干脆想fork到自己的github仓库,又要把本地的修改提交到fork后的自己的github仓库中.这 ...

  8. HTML完全使用详解 PDF扫描版​

    <HTML完全使用详解>根据网页制作的实际特点和目前市场需要,全面系统地介绍了最新的HTML4.01.丰富的实例贯穿全书,能帮助您全面掌握HTML,而且本书所有实例均可直接修改使用,可以提 ...

  9. json序列化.xml序列化.图片转base64.base64转图片.生成缩略图.IEnumerable<TResult> Select<TSource, TResult>做数据转换的五种方式

     JSON序列化 /// <summary> /// JSON序列化 /// </summary> public static class SPDBJsonConvert { ...

  10. Windows Services windows服务如何删除服务

    如何删除服务 一.为何要删除服务: 1.当服务文件丢失时,在服务里还会显示. 2.现在好多都会有服务,你看那个不顺眼就可以把它干掉.前提是不用的软件. 二.使用: 使用sc.exe 这个是window ...