Linux Shell 截取字符串的方法示例

shell中截取字符串的方法很多

${var#*/}
${var##*/}
${var%/*}
${var%%/*}
${var:start:len}
${var:start}
${var:0-start:len}
${var:0-start}
格式 说明
${string: start :length} 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。
${string: start} 从 string 字符串的左边第 start 个字符开始截取,直到最后。
${string: 0-start :length} 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。
${string: 0-start} 从 string 字符串的右边第 start 个字符开始截取,直到最后。
${string#*chars} 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string##*chars} 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string%*chars} 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。
${string%%*chars} 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。

--------------------------------------------------------------------------------

下面用几个例子展示一下:

1) 获得字符串的长度

语法:

${#var}

示例代码:

str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
echo "string : [${str}]"

length=${#str}
echo "length : [${length}]"

执行结果:

string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
length : [61]

--------------------------------------------------------------------------------

2) 使用 # 和 ## 获取尾部子字符串

2.1) # 最小限度从前面截取word

语法:

${parameter#word} 

示例代码:

str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
echo "string : [${str}]"

#分割符为'/'
substr=${str#*/}
echo "substr : [${substr}]"

执行结果:

string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
substr : [/www.fengbohello.xin3e.com/blog/shell-truncating-string]

2.2) ## 最大限度从前面截取word

语法:

${parameter##word}

示例代码:

str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
echo "string : [${str}]"

#分割符为'/'
substr=${str##*/}
echo "substr : [${substr}]"

执行结果:

string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
substr : [shell-truncating-string]

--------------------------------------------------------------------------------

3) 使用 % 和 %% 获取头部子字符串

3.1) % 最小限度从后面截取word

语法:

${parameter%word} 

示例代码:

str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
echo "string : [${str}]"

substr=${str%/*}
echo "substr : [${substr}]"

执行结果:

string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
substr : [http://www.fengbohello.xin3e.com/blog]

3.2) %% 最大限度从后面截取word

语法:

${parameter%%word}

示例代码:

str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
echo "string : [${str}]"

substr=${str%%/*}
echo "substr : [${substr}]"

执行结果:

string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
substr : [http:]

--------------------------------------------------------------------------------

4)使用 ${var:} 模式获取子字符串

4.1) 指定从左边第几个字符开始以及子串中字符的个数

语法:

${var:start:len}

示例代码:

str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
echo "string : [${str}]"

#其中的 0 表示左边第一个字符开始,7 表示子字符的总个数。
substr=${str:0:7}
echo "substr : [${substr}]"

执行结果:

string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
substr : [http://]

4.2) 从左边第几个字符开始一直到结束

语法:

${var:7}

示例代码:

str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
echo "string : [${str}]"

#其中的 7 表示左边第8个字符开始
substr=${str:7}
echo "substr : [${substr}]"

执行结果:

string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
substr : [www.fengbohello.xin3e.com/blog/shell-truncating-string]

4.3) 从右边第几个字符开始以及字符的个数

语法:

${var:0-start:len}

示例代码:

str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
echo "string : [${str}]"

#其中的 0-23 表示右边算起第23个字符开始,5 表示字符的个数
substr=${str:0-23:5}
echo "substr : [${substr}]"

执行结果:

string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
substr : [shell]

4.4) 从右边第几个字符开始一直到结束

语法:

${var:0-start}

示例代码:

str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
echo "string : [${str}]"

#其中的 0-6 表示右边算起第6个字符开始
substr=${str:0-6}
echo "substr : [${substr}]"

执行结果:

string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
substr : [string]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Shell脚本8种字符串截取方法总结

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

  • shell编程中的字符串截取方法小结

    一.Gnu 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} 从左向右截取最后一个str

  • 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

  • Powershell截取字符串并添加省略号的例子

    限制字符串大小 支持所有版本. 确保你输出的字符串不会过长,当字符串超过你指定的长度你可以用下面办法将其缩短. 复制代码 代码如下: if ($text.Length -gt $MaxLength) {   $text.Substring(0,$MaxLength) + '...' } else {   $text }

  • Linux Shell 截取字符串的方法示例

    shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var:start} ${var:0-start:len} ${var:0-start} 格式 说明 ${string: start :length} 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符. ${string: start} 从 string 字符串的左边第 start 个字符开始截取,直到

  • 【C#基础】Substring截取字符串的方法小结(推荐)

    前言 在公司的图书馆项目中曾经用过截取字符串的方法,项目是java语言的:最近在公司的另一个项目中又需要截取字符串,一种环境是C#语言,一种环境是SQL Server存储过程:先来说一下后台程序中截取字符串的方法. 正文 c#中截取字符串主要是借助Substring 这个函数. string string.Substring(int startIndex,int length); 说明: 如果传入的参数为两个长整参数,第一个参数指子字符串的起始位置,也就是开始截取的位置,第二个参数指截取的长度.

  • java substring 截取字符串的方法

    substring(参数)是java截取字符串的一个方法. 它有两种传参的方式: 第一种:public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串,该字符串从指定索引出的字符开始,到此字符串末尾结束. 第二种:public String substring(int beginIndex,int endIndex) 同样返回一个新的字符串,该字符串从指定的beginIndex索引处开始,到指定的endIndex索引值结束. 不包

  • Go语言中的字符串处理方法示例详解

    1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号("")或反引号(``)定义. 双引号:"", 用于单行字符串. 反引号:``,用于定义多行字符串,内部会原样解析. 示例: // 单行 "心有猛虎,细嗅蔷薇" // 多行 ` 大风歌 大风起兮云飞扬. 威加海内兮归故乡. 安得猛士兮守四方! ` 字符串支持转义

  • 正则表达式截取字符串的方法技巧

    有这么一段字符串: [数字]字符串 结果 取  a=数字 b=字符串 截取方法1: int a = Convert.ToInt32(txt1.Text.Trim().Replace('[', ']').Split(']')[1]); string b = txt1.Text.Trim().Replace('[', ']').Split(']')[2]; 截取方法2: string str = "[数字]字符串"; Regex reg = new Regex(@" ([^]+)

  • Java截取字符串的方法

    本文实例讲述了Java截取字符串的方法.分享给大家供大家参考.具体实现方法如下: public static void main(String args[]) { //以该字符第一次出现,开始截取 //String str="abc.def"; //String str="abc.def.sdfsdf.fsdfd.ddddd.ggggg.ttttt"; //String str1=str.substring(str.indexOf(".")+1,

  • php按单词截取字符串的方法

    本文实例讲述了php按单词截取字符串的方法.分享给大家供大家参考.具体分析如下: 这里指定字符串和单词数量进行截取 复制代码 代码如下: <?php function limit_words($string, $word_limit) {     $words = explode(" ",$string);     return implode(" ",array_splice($words,0,$word_limit)); } //Example Usage

  • Go语言按字节截取字符串的方法

    本文实例讲述了Go语言按字节截取字符串的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: // 按字节截取字符串 utf-8不乱码 func SubstrByByte(str string, length int) string {     bs := []byte(str)[:length]     bl := 0     for i:=len(bs)-1; i>=0; i-- {         switch {         case bs[i] >= 0 &

  • go语言按显示长度截取字符串的方法

    本文实例讲述了go语言按显示长度截取字符串的方法.分享给大家供大家参考.具体分析如下: 根据显示长度截取字符串,之前php用的utf8编码,10个英文和10个汉字的显示长度差距太大,按字节截取的话又会出错出现截取半个汉字的情况,所以写了这两个函数. 这两天在折腾golang,所以就用golang重写了着连个函数.代码如下: 复制代码 代码如下: package main import (     "fmt" ) func main() {     fmt.Println(show_st

  • C#区分中英文按照指定长度截取字符串的方法

    本文实例讲述了C#区分中英文按照指定长度截取字符串的方法.分享给大家供大家参考.具体如下: 这段C#代码用于按照指定的长度截取字符串,一个中文字符算2个字符,按照这个方法截取的字符串基本可以保持显示长度一致 /// <summary> /// 截取文本,区分中英文字符,中文算两个长度,英文算一个长度 /// </summary> /// <param name="str">待截取的字符串</param> /// <param nam

随机推荐