bash 中 trim 字符串(去除首尾空格) - grep 去空行
在 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 去空行的更多相关文章
- Python中常见字符串去除空格的方法总结
Python中常见字符串去除空格的方法总结 1:strip()方法,去除字符串开头或者结尾的空格>>> a = " a b c ">>> a.s ...
- 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 ...
- java 编写函数将字符串的首尾空格删除。
String 类有个方法去除字符串首位空格: str.trim(); 查看源代码: public String trim() { int len = value.length; ; char[] va ...
- C++ 去掉字符串的首尾空格和全部空格
#include <iostream>#include <string>using namespace std; //去掉收尾空格string& ClearHeadTa ...
- js实现trim() JS去掉首尾空格 JS去掉两头空格
function trimStr(str){ return str.replace(/(^\s*)|(\s*$)/g,""); } 用的时候就是直接 var 变量=trimStr( ...
- js去除首尾空格
简单的:str = jQuery.trim(str); var temp = " aa b "; console.log("cc" + temp); temp ...
- Bash中的字符串变量扩展
1.向尾部方向的最小化删除 (%) $pathname="/usr/bin/local/bin"$echo ${pathname%/bin*}/usr/bin/local 2.向尾 ...
- java.lang.String里面的trim()方法——删除首尾空格
结果如图 package com.softeasy.test1; public class String_trim { public static void main(String[] args) { ...
- C/C++实现删除字符串的首尾空格
StdStringTrimTest.cpp #include <iostream> int main() { std::string str(" 字符串 String " ...
随机推荐
- 使用/dev/dsp的wav文件播放器源码
转载于:http://blog.csdn.net/dux003/article/details/5459423 #include #include #include #include #include ...
- js中FOR循环的陷阱
//闭包解决 循环输出的问题 for(var i=0;i<rows.length;i++) {( function (i) { })(i);
- 框架之Struts2
相比较hibernate简单了许多 案例:使用Struts2框架完成登录功能 需求分析 1. 使用Struts2完成登录的功能 技术分析之Struts2框架的概述 1. 什么是Struts2的框架 * ...
- JS中数组的内建函数说明
函数简述 map():返回一个新的Array,每个元素为调用func的结果 filter():返回一个符合func条件的元素数组 some():返回一个boolean,判断是否有元素是否符合func条 ...
- Spring IOC容器解析及实现原理
最近一段时间,“容器”两个字一直萦绕在我的耳边,甚至是吃饭.睡觉的时候都在我脑子里蹦来蹦去的.随着这些天一次次的交流.讨论,对于容器的理解也逐渐加深.理论上的东西终归要落实到实践,今天就借助sprin ...
- C语言-郝斌笔记-006排序及查找
1. int partion(int *a, int low, int high) { int value = a[low]; int t; while (low < high) { while ...
- Linux 终端命令行提示符的艺术--PS1进阶
话不多说,先瞅瞅我的命令行提示符(有点大): 图中命令行解释:┌[阳历日期/农历日期 时间]├[当前目录下目录数+当前目录下文件数][当前绝对目录]└[用户名@主机名-第几个终端 ╰_╯] 相关配置文 ...
- Shell表达式,如${file##*/}
Shell表达式,如${file##*/} 2017年10月26日 15:24:40 阅读数:343 今天看一个脚本文件的时候有一些地方不太懂,找了一篇文章看了一些,觉得不错,保留下来. 假设我们定义 ...
- Mat类的输出格式
从前面的例程中, 可以看到 Mat 类重载了<<操作符, 可以方便得使用流操作来输出矩阵的内容.默认情况下输出的格式是类似 Matlab 中矩阵的输出格式.除了默认格式,Mat 也支持其他 ...
- Xamarin Mono for VS开发窗体标题(Title)乱码解决方案
利用mono for VS开发一个手机程序,结果只有窗体的标题 title部分是乱码,其他所有地方中文都显示正常,很郁闷.百度很久无果.最后发现只要在 VS菜单中 的 文件->高级保存选型中奖编 ...