shell脚本之——字符串截取

在C/C++中,如果想要对一个字符串进行截取,可以通过操作下标或者指针来完成,而在shell脚本中,如果想要对一个字符串进行指定的截取,有多种方法可以来完成:

如下举例均用:STR="hi/i/am/just/a/string"


  • ${STR#*char} 表示从左开始删除第一个char左边的所有字符,截取右边的字符串
#!/bin/bash
STR=hi/i/am/just/a/string
echo ${STR}

CUT=${STR#*/}
echo ${CUT}

其实*可以看做是通配符,也就是char左边的所有字符全都删除;

运行程序:

  • ${STR##*char} 表示从左开始删除最后一个char左边的所有字符,截取右边的字符串

将上例程序改为:

CUT=${STR##*/}

运行程序:

  • ${STR%char*} 表示从右开始删除第一个char右边的所有字符,截取左边的字符串

将上例程序改为:

CUT=${STR%/*}

同样*可以看做是通配符,表示匹配右边所有的字符删除,保留左边;

运行程序得:

  • ${STR%char*} 表示从右开始删除最后一个char右边的所有字符,截取左边的字符串

将上例程序改为如下:

CUT=${STR%%/*}

运行程序得:

  • ${STR:N:M}  表示从左边第N个字符开始截取M个字符,不包括第N个字符

将上例程序改为:

CUT=${STR:3:4}

表示从左边第3个字符开始截取后面的4个字符;如果N为0表示从第一个字符开始,但是包括第一个字符;

运行程序:

  • ${STR:N}  表示从左边第N个字符开始截取后面所有的字符,不包括第N个字符

将上面程序改为如下:

CUT=${STR:7}

表示从左边第7个字符开始取后面的所有字符;

运行程序:

  • ${STR:0-N:M}  表示从右边第N个字符开始截取M个字符,包括第N个字符

将上例程序改为:

CUT=${STR:0-7:3}

表示从右边开始数第7个字符开始,包括第七个字符本身,截取三个字符;

运行程序:

  • ${STR:0-N}  表示从右边第N个字符开始截取后面的所有字符,包括第N个字符

将上例程序改为:

CUT=${STR:0-7}

表示从右边开始数第7个字符开始截取后面的所有字符;

运行程序:

  • ${STR} | cut -c N  表示取从左边开始数的第N个字符

示例代码:

#!/bin/bash
STR=hi/i/am/just/a/string
echo ${STR}

echo ${STR} | cut -c 7

表示截取从左边数第7个字符;

运行程序:

  • ${STR} | cut -c N-  表示截取从左边开始数的第N个字符往后的所有字符,包括第N个

更改如上程序:

echo ${STR} | cut -c 7-

表示从截取从左边第7个字符开始剩下的所有字符;

运行程序:

  • ${STR} | cut -c N-M  表示截取从左边开始数的第N个字符到第M个字符之间的所有字符,包括第N个字符,但是不包括第M个字符

将程序改为如下:

echo ${STR} | cut -c 2-7

表示截取从左边第2个字符到第7个字符之间的所有字符,包括第2个字符,不包括第7个字符;

运行程序:

  • ${STR} | cut -c -N  表示截取从左边开始数的第N个字符往前的所有字符,包括第N个字符

将程序改为如下:

echo ${STR} | cut -c -7

表示从左边第7个字符开始数删除后面所有的字符,截取前面的字符;

运行程序如下:

  • expr substr "${STR}" N M  表示从左边第N个字符开始往后截取M个字符

示例程序:

#!/bin/bash
STR=hi/i/am/just/a/string
echo ${STR}

CUT=$(expr substr "${STR}" 3 5)
echo ${CUT}

因为expr是命令,所以上面的$()为命令替换,表示截取从左边第3个字符开始往后截取5个字符;

运行程序:

《完》

时间: 2024-10-24 22:04:28

shell脚本之——字符串截取的相关文章

Linux Shell脚本编程--字符串截取

Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符. echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.aaa.com/123.htm 2. ## 号截取,删除左边字符,保留右边字符. echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个

​老男孩教育每日一题-第98天-shell知识点:shell脚本中字符串截取的常用用法?

答案参考: 假设有变量var=http://www.oldboyedu.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符. 变量: var=http://www.oldboyedu.com/123.htm echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 :www.oldboyedu.com/123.htm 2. ## 号截取,删除左边字符,保留右边字符. 变量

Linux下的shell脚本的字符串截取

1 #! /bin/bash 2 3 str="http://www.baidu.com/test.htm" 4 5 #echo ${str} 运行结果为:http://www.baidu.com/test.htm 方法一:#截取,删除左边字符,保留右边字符 echo ${str#*//} #*//表示从左边删除第一个//号及左边的所有字符,即删除http:// 运行结果为:www.baidu.com/test.htm 方法二:##截取,删除左边字符,保留右边字符 echo ${str

shell脚本中字符串截取的多种方法

1.#号截取,删除左边字符,保留右边字符. 代码:echo ${var#*//} 其中var是变量名,#是运算符,*//表示从左边开始删除第一个//及左边的所有字符 示例: 结果: 2.##截取,删除左边字符,保留右边字符 代码:echo ${var##*/} 其中##*/表示从左边开始删除最后(最右边)一个/号及左边的所有字符 示例: 结果: 3.% 号截取,删除右边字符,保留左边字符 代码:echo ${var%/*} 其中%/*表示从右边开始,删除第一个/号及右边的字符 示例: 结果: 4

[转载]Linux shell脚本的字符串截取

假设有变量 var=http://www.google.com/test.htm 一 # 号截取,删除左边字符,保留右边字符.echo ${var#*//}其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.google.com/test.htm 二 ## 号截取,删除左边字符,保留右边字符.echo ${var##*/}##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符即删除 http:/

Linux shell脚本的字符串截取

假设有变量 var=http://www.hao.com/123.htm 一. # 号截取,删除左边字符,保留右边字符. echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 :www.hao.com/123.htm  二 .## 号截取,删除左边字符,保留右边字符. echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符 即删除 http

shell脚本:字符串的截取

在shell脚本中我们所有变量的存储形式都是字符串.所以对于字符串的截取来说就变得十分重要了. 而在shell脚本中,如果想要对一个字符串进行指定的截取,有多种方法可以来完成:如下举例均用:STR="hello world my dear sister" ${STR#*char} 表示从左开始删除第一个char左边的所有字符,截取右边的字符串 #!/bin/bash STR="hello world my dear sister" echo ${STR} CUT=$

shell下的字符串截取方法

一.Linux shell截取字符串的前几位,例截取前8位: 方法如下:下面a=1234sterrerwrwretw 1.expr substr "$a" 1 8 2.echo $a|cut -c1-8 3..echo $a|dd bs=1 count=8 二.按指定字符串截取 1.第一种方法: 1> ${val##*string} (双#*截取) 从左向右截取最后一个string后的字符串 例:a=123stringrwtw134string456 2>${varible

Shell脚本编程——字符串变量处理

相信正在脚本之路上狂奔的同学们,都能感觉到脚本中需要应用变量的地方非常广泛,简单来看变量也只不过就是:var=value:如果我们深入其中,也能发现变量里面的学问其实也挺深的,今天就给大家分享一下这个小小的变量里面到底有多少的学问吧.Shell变量一般是无类型的,但是bash Shell提供了declare和typeset两个命令用于指定变量的类型,两个命令是完全等价的. 一.高级变量用法--定义有类型变量declare [选项] 变量名 -r 将变量设置为只读属性  等同于使用export V