Shell字符串截取的详细方法

一、Linux shell 截取字符变量的前8位,有方法如下:


代码如下:

1.expr substr “$a” 1 8
2.echo $a|awk ‘{print substr(,1,8)}'
3.echo $a|cut -c1-8
4.echo $
5.expr $a : ‘\(.\\).*'
6.echo $a|dd bs=1 count=8 2>/dev/null

二、按指定的字符串截取
1、第一种方法:
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串
“*”只是一个通配符可以不要

例子:


代码如下:

$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg

2、第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。

可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:


代码如下:

$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga

这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。

三、按照指定要求分割:
比如获取后缀名


代码如下:

ls -al | cut -d “.” -f2

应用心得:


代码如下:

$MYVAR="12|dadg"
echo ${MYVAR##*|}   #打印分隔符后的字符串
dafa
echo ${MYVAR%%|*} #打印分隔符前的字符串
12

(0)

相关推荐

  • Shell脚本中计算字符串长度的5种方法

    有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前Shell中获取字符串的长度的多种方法,在这里分享给大家,方法如下: 方法1: 使用wc -L命令 wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数. 复制代码 代码如下: echo "abc" |wc -L 方法2: expr length string 使用expr length可以获取string的长度 方法3: awk获取域的个

  • 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字符串比较相等、不相等方法小结

    #!/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代码

    比较两个字符串是否相等的办法是: if [ "$test"x = "test"x ]; then 这里的关键有几点: 1 使用单个等号 2 注意到等号两边各有一个空格:这是unix shell的要求 3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的.而如果没有这个x,表达式就会报错:[: =: unary operator expected 二元比较操作符,比较

  • 在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实用技巧:快速去除字符串中的空格

    在整理词库的过程中遇到 一个问题,有些其实是同一个关键词之关有空格的话,无法正常被去重,那么有没有办法能快快速去除这些字符中间的空格呢?经过百度一番,找到一个解决办法,记录一下. 效果如下图所示,图上半部分是示例文本,下半部分就是用shell去掉空格后的效果.其中用到就是下面第3个方法. 在UNIX上使用sed命令进行字符串处理中常常遇到的问题就是行首行尾的空格怎么删除. 下面介绍sed是怎样实现的,当然awk同样可以. 1.删除行首空格 复制代码 代码如下: sed 's/^[ \t]*//g

  • 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中判断字符串是否为数字的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

随机推荐