Shell实用技巧:快速去除字符串中的空格
在整理词库的过程中遇到 一个问题,有些其实是同一个关键词之关有空格的话,无法正常被去重,那么有没有办法能快快速去除这些字符中间的空格呢?经过百度一番,找到一个解决办法,记录一下。
效果如下图所示,图上半部分是示例文本,下半部分就是用shell去掉空格后的效果。其中用到就是下面第3个方法。
在UNIX上使用sed命令进行字符串处理中常常遇到的问题就是行首行尾的空格怎么删除。
下面介绍sed是怎样实现的,当然awk同样可以。
1、删除行首空格
sed ‘s/^[ \t]*//g'
说明:
第一个/的左边是s表示替换,即将空格替换为空。
第一个/的右边是表示后面的以xx开头。
中括号表示“或”,空格或tab中的任意一种。这是正则表达式的规范。
中括号右边是*,表示一个或多个。
第二个和第三个\中间没有东西,表示空
g表示替换原来buffer(缓冲区)中的,sed在处理字符串的时候并不对源文件进行直接处理,先创建一个buffer,但是加g表示对原buffer进行替换
整体的意思是:用空字符去替换一个或多个用空格或tab开头的本体字符串
2、删除行末空格
sed ‘s/[ \t]*$//g'
和上面稍微有些不同是前面删除了^符,在后面加上了美元符,这表示以xx结尾的字符串为对象。
但是要注意在KSH中,Tab并不是\t而是直接打入一个Tab就可以了。
3、删除所有的空格
sed s/[[:space:]]//g
相关推荐
-
Shell字符串截取的详细方法
一.Linux shell 截取字符变量的前8位,有方法如下: 复制代码 代码如下: 1.expr substr "$a" 1 82.echo $a|awk '{print substr(,1,8)}'3.echo $a|cut -c1-84.echo $5.expr $a : '\(.\\).*'6.echo $a|dd bs=1 count=8 2>/dev/null 二.按指定的字符串截取1.第一种方法:${varible##*string} 从左向右截取最后一个strin
-
Linux shell脚本中字符串连接的方法
如果想要在变量后面添加一个字符,可以用一下方法: 复制代码 代码如下: $value1=home$value2=${value1}"="echo $value2 把要添加的字符串变量添加{},并且需要把$放到外面.这样输出的结果是:home=,也就是说连接成功. 又如: 复制代码 代码如下: [root@localhost sh]# var1=/etc/[root@localhost sh]# var2=yum.repos.d/[root@localhost sh]# var3=${v
-
Shell字符串比较相等、不相等方法小结
#!/bin/sh #测试各种字符串比较操作. #shell中对变量的值添加单引号,爽引号和不添加的区别:对类型来说是无关的,即不是添加了引号就变成了字符串类型, #单引号不对相关量进行替换,如不对$符号解释成变量引用,从而用对应变量的值替代,双引号则会进行替代 #author:tenfyguo A="$1" B="$2" echo "输入的原始值:A=$A,B=$B" #判断字符串是否相等 if [ "$A" = "
-
Shell脚本8种字符串截取方法总结
Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符. 复制代码 代码如下: echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 :www.aaa.com/123.htm 2. ## 号截取,删除左边字符,保留右边字符. 复制代码 代码如下: echo ${var##*/}
-
Shell中判断字符串是否为数字的6种方法分享
本篇文章主要介绍了"shell 判断字符串是否为数字",主要涉及到shell 判断字符串是否为数字方面的内容,对于shell 判断字符串是否为数字感兴趣的同学可以参考一下. #!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo string a is numbers 第一个-n是shell的测试标志,对后面的串"`
-
用Shell判断字符串包含关系的方法小结
前言 现在每次分析网站日志的时候都需要判断百度蜘蛛是不是真实的蜘蛛,nslookup之后需要判断结果中是否包含"baidu"字符串 以下给出一些shell中判断字符串包含的方法,来源程序员问答网站 stackoverflow 以及segmentfault. 方法一:利用grep查找 strA="long string" strB="string" result=$(echo $strA | grep "${strB}") if
-
在Shell中分割字符串的例子
比如,要分割 test="aaa,bbb,cc cc,dd dd",可以这样 复制代码 代码如下: arr=$(echo $test|tr "," "\n") 还可以这样 复制代码 代码如下: OLD_IFS=$IFSIFS=','arr=$testIFS=$OLD_IFS 然后用 复制代码 代码如下: for x in $arr; do echo $xdone 看看效果 或者更直接一点 复制代码 代码如下: IFS=',' arr=($tes
-
比较两个字符串是否相等的shell代码
比较两个字符串是否相等的办法是: if [ "$test"x = "test"x ]; then 这里的关键有几点: 1 使用单个等号 2 注意到等号两边各有一个空格:这是unix shell的要求 3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的.而如果没有这个x,表达式就会报错:[: =: unary operator expected 二元比较操作符,比较
-
Shell脚本实现简单分割字符串
我们有这样一个字符串: 复制代码 代码如下: info='abcd;efgh' 现在想获取abcd和efgh,我们可以简单地用cut工具来获取: 复制代码 代码如下: fstr=`echo $info | cut -d \; -f 1` sstr=`echo $info | cut -d \; -f 2` 这里主要是用了cut工具的-d和-f参数: -d:指定字段的分隔符,默认的字段分隔符为"TAB": -f:显示指定字段的内容: 关于cut工具其他参数可参考这里:cut命令
-
Shell脚本中计算字符串长度的5种方法
有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前Shell中获取字符串的长度的多种方法,在这里分享给大家,方法如下: 方法1: 使用wc -L命令 wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数. 复制代码 代码如下: echo "abc" |wc -L 方法2: expr length string 使用expr length可以获取string的长度 方法3: awk获取域的个
随机推荐
- php简单socket服务器客户端代码实例
- Oracle数据库中的控制文件管理以及常用参数设置
- 用QuickWAP组件结合ASP建设Wap站点第1/2页
- Vue2路由动画效果的实现代码
- JS中Swiper的使用和轮播图效果
- Linux通过命令仅获取IP地址的方法
- 详解c# .net core 下的网络请求
- iOS获取设备唯一标识的8种方法
- Java语言实现简单FTP软件 FTP本地文件管理模块实现(9)
- PHP编程函数安全篇
- js实现获取两个日期之间所有日期的方法
- java编程实现基于UDP协议传输数据的方法
- 基于jquery的用鼠标画出可移动的div
- 用jQuery获取table中行id和td值的实现代码
- JS下拉缓冲菜单示例代码
- js日期时间补零的小例子
- javascript判断用户浏览器插件安装情况的代码
- 支付宝开发平台之第三方授权登录与获取用户信息
- 使用Java读取Word文件的简单例子分享
- java整数与byte数组的转换实现代码