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

# echo ${foo:3}       //从下标为3的字符开始截取到最后的字符

defg

3、${变量名#pattern}    ${变量名##parttern}

pattern:模式,通配符表达式

作用:清除字符串中符合pattern的字符

# foo="file.txt.zip"

# echo ${foo#*.}          //一个#号代表按照最短匹配清除

txt.zip

# echo ${foo##*.}         //2个#号代表按照最长匹配清除

zip

4、${变量名%pattern}    ${变量名%%parttern}

pattern:模式,通配符表达式

作用:清除字符串中符合pattern的字符,从字符串最后匹配

# echo $foo

file.txt.zip

# echo ${foo%.*}              //1个%代表按照最短匹配

file.txt

# echo ${foo%%.*}           //2个%%代表按照最长匹配

file

5、字符串替换操作

${变量名称/old/new}

[[email protected] ~]# foo="mp3.txt.txt.mp3.avi"

[[email protected] ~]#

[[email protected] ~]# echo ${foo/txt/TXT}

mp3.TXT.txt.mp3.avi

[[email protected] ~]#

[[email protected] ~]# echo ${foo//txt/TXT}

mp3.TXT.TXT.mp3.avi

[[email protected] ~]# foo="txt.mp3.txt"

[[email protected] ~]#

[[email protected] ~]# echo ${foo/#txt/TXT}

TXT.mp3.txt

[[email protected] ~]# echo ${foo/%txt/TXT}

txt.mp3.TXT

6、实现大小写字母的转换

# foo="ABde"

# echo ${foo,,}      //将字符串foo全部转换成小写

abde

# echo ${foo,}       //将字符串foo的第1个字符转换成小写

aBde

# echo ${foo^}      //将字符串foo的第1个字符转换成大写

ABde

# echo ${foo^^}     //将字符串foo全部转换为大写

ABDE

时间: 2024-07-31 14:35:16

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 处理字符串和{}操作

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后的字符