shell之字符串处理

字符串切片:

${var:offset:number}

offset:要跳过的字符串个数

number:要取出的字符串个数

例:

name="Obama"

${name:1:2} -->显示结果为ba

${name:1} -->显示结果为bama

取字符串的最右侧几个字符:${var: -legh}:

注意:冒号后必须有一空白字符;

#echo ${name: -3}

基于模式取子串:

从左到右进行匹配

${var#*word}:其中word可以是指定的任意字符;功能:自左而右,查找var变量所存储的字符串中,第一次出现的word(字符),删除字符串开头至第一次出现word字符(包括word字符)之间的所有字符;

${var##*word}:同上,不过,删除的是字符串开头至最后一次由word指字的字符之间的所有内容

从右到左进行匹配

${var%word*}:其中word可以是指定的任意字符;功能:自左而右,查找var变量所存储的字符串中,第一次出现的word(字符),删除字符串开最后一个字符 向左至第一次出现word字符之间的所有字符;

${var%%word*:}:同上,不过,删除的是字符串由结尾至第一次word指字的字符之间的所有内容

示例:usr=http://www.magedu.com:80

#${usr##*:}:取到的是80

#${usr%%:*}:最到的是http

查找替换:

${var/pattern/substi}:

查找var所表示的字符串中,第一次被pattern所匹配到的字符串,以substi替换之;

#user=$(head -1 /etc/passwd)

#echo ${user/root/ROOT}

${var//pattern/substi}:

查找var所表示的字符串中,所有能被pattern所匹配到的字符串,以substi替换之;

${var/#pattern/substi}:

查找var所表示的字符串中,行首被pattern所匹配到的字符串,以substi替换之;

${var/%pattern/substi}:

查找var所表示的字符串中,行尾被pattern所匹配到的字符串,以substi替换之;

查找并删除:

${var/pattern}:查找var所表示的字符串中,第一次被匹配到的进行删除

${var//pattern}:查找var所表示的字符串中,所有被匹配到的进行删除

${var/#pattern}:查找var所表示的字符串中,行首被匹配到的进行删除

${var/%pattern}:查找var所表示的字符串中,行尾被匹配到的进行删除

字符大小写转换:

${var^^}:把var中所有小写字母转换为大写:

${var,,}:把var中所有大写字母转换为小写:

变量赋值:

${var:-value}:如果var为空或未设置,那么返回value;否则,则返回var的值

${var:=value}:如果var为空或未设置,那么把value赋值给var并返回(等于设置默认值)

${var:+value}:如果var不同,则返回value;刚好与${var:-value}相反

${var:?error_info}:如果var为空或未设置,那么返回error_info;否则,则返回var的值

时间: 2024-10-28 05:00:26

shell之字符串处理的相关文章

shell截取字符串的方法

参考文献: linux中shell截取字符串方法总结 [Linux]如何在Shell脚本中计算字符串长度? 截取字符串的方法一共有八种,主要为以下方法 shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ${parameter:+word} 上面4种可以用来进行缺省值的替换. ${#parameter} 上面这种可以获得字符串的长度. ${para

Linux Shell 截取字符串

Linux Shell 截取字符串 shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var:start} ${var:0-start:len} ${var:0-start} 下面用几个例子展示一下: 1) 获得字符串的长度 语法: ${#var} 示例代码: str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string

shell中字符串的截取

shell中字符串的截取介绍9种,以 var=http://www.google.com/test/.html为例 (1)方法一:# 号截取,删除左边字符,保留右边字符. echo ${var#*//} var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符, (*: 匹配0个或多个任意字符) 即删除http:// 结果是 :www.google.com/test.html (2)方法二:## 号截取,删除左边字符,保留右边字符. echo ${var##*

Shell中字符串、数值的比较

原文:http://apps.hi.baidu.com/share/detail/31263915 在shell中字符串与数值的比较方法是不同的,要注意区分 整数比较:    -eq       等于,如:if [ "$a" -eq "$b" ]    -ne       不等于,如:if [ "$a" -ne "$b" ]    -gt       大于,如:if [ "$a" -gt "$b&

shell切分字符串到数组

shell切分字符串到数组 问题: 对于’aa,bb,cc,dd,ee’这样的字符串输出采用,分隔开的aa bb cc dd ee aa:bb is ok:/home/work按照":"分割开来的aa      bb is ok      /home/work 解决方法1: #!/bin/bash var=’aa,bb,cc,dd,ee’ var=${var//,/ } #这里是将var中的,替换为空格 for element in $var do echo $element done

Linux shell去除字符串中所有空格

Linux shell去除字符串中所有空格 echo $VAR | sed 's/ //g' 原文地址:https://www.cnblogs.com/yjd_hycf_space/p/9839494.html

shell之字符串的处理

shell脚本中对字符串的处理 1.${#变量名} 作用:返回字符串的长度 # foo="this is a test" # echo ${#foo}           //返回字符串foo的长度 14 2.${变量名:offset:length} 作用:截取字符串,length指定截取的长度,也可以不写:字符串的第一个字符的索引值为0 # foo="abcdefg" # echo ${foo:3:2}     //从下标为3的字符开始截取,共截取2个 de #

Shell 处理字符串和{}操作

1. 获取变量的长度 获取字符串长度的方法大概有4种:(以hello world 为例) 通过 wc -L $ echo "hello world" | wc -L 11 通过expr length string $ expr length "hello world" 11 通过awk内置的length函数 $ echo "hello world" | awk '{print length($0)}' 11 通过echo ${#string_na

Shell判断字符串包含关系的几种方法

现在每次分析网站日志的时候都需要判断百度蜘蛛是不是真实的蜘蛛,nslookup之后需要判断结果中是否包含“baidu”字符串 以下给出一些shell中判断字符串包含的方法,来源程序员问答网站 stackoverflow 以及segmentfault. 方法一:利用grep查找 1 strA="long string" 2 strB="string" 3 result=$(echo $strA | grep "${strB}") 4 if [[ &

shell脚本字符串截取

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.expr $a : ‘\(.\\).*’ 5.echo $a|dd bs=1 count=8 2>/dev/null 二.按指定的字符串截取 1.第一种方法: ${varible##*string} 从左向右截取最后一个string后的字符