`
ljhupahu
  • 浏览: 33812 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

linux shell substr(分割字符串)

 
阅读更多
转载:  http://zhangwei20086.blog.163.com/blog/static/23055718201222945133958/

原来在shell中如果遇到要截取字符串的情况,就调用awk中的substr来实现。
今天了解到一种新的方法,原来shell中本身就支持这种用法。
如,有一字符串”12345678″,现在要截取第三个到第六个字符的字符串区间。
则可以:


[xok.la ~]$ export str="123456789"
[xok.la ~]$ echo ${str:3:(6-3)}
456
[xok.la ~]$ unset str

从以上第二个表达式可以看出这个用法,即:${str:3:(6-3)}
可以归纳为:${str:begin:len},且支持表达式,如:6-3。

补充一下从网上找到一些其他的用法:

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
分享到:
评论

相关推荐

    Linux字符串截取

    在 Linux 中,我们可以使用 cut 命令来按照指定要求分割字符串。例如:`ls -al | cut -d “.” -f2` 可以截取文件的后缀名。 四、bash 内置的变量扩展功能 bash 自身也可以执行一些便利的字符串截断。例如: 1. ...

    linux-shell脚本命令:awk命令简介

    awk内置函数还包括对字符串进行操作的功能,例如 substr、split、sub和gsub函数,分别用于获取子字符串、分割字符串到数组、字符串替换等。 使用awk时,模式匹配是一个非常重要的功能。模式可以是字符串或者正则...

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

    本文主要总结了三种不同的字符串截取方法:截取字符变量的前8位、按指定的字符串截取以及按照指定要求分割字符串。 首先,我们来看如何截取字符变量的前8位。在Gnu Linux shell环境下,有以下几种实现方式: 1. ...

    02_计算机基础3-41

    此外,`cut`还可以用于按分隔符分割字符串并提取特定列。字符串替换则可以借助`sed`的`s/old/new/g`模式,或者`awk`的`gsub()`函数。 在整数型操作中,Shell提供了多种方式进行数学计算。例如,可以使用`$(...

    shell awk从入门到精通

    3. **字符串分割**:`split(s, 数组名, 分割符)`将字符串`s`按指定分隔符分割到数组中。 4. **全局替换**:`gsub(r,s,var)`在整个字符串`var`中将`r`替换为`s`。 5. **部分替换**:`sub(r,s,var)`仅替换第一次出现的...

    Impatient perl

    `split`函数按指定分隔符分割字符串为数组,`join`则将数组元素合并为字符串。 ```perl my @words = split(/ /, $sentence); my $string = join('-', @words); ``` #### 字符串数组化 `qw`函数可以将空格分隔的...

    awk学习资料最近整理的资料

    6. **功能函数**:awk提供了丰富的内置函数,如`length()`计算字符串长度,`split()`分割字符串,`printf()`格式化输出,`substr()`提取子字符串等。 7. **条件操作**:awk中的条件控制结构包括`if`、`if-else`和`...

    Sed与awk第三版(高清版)

    4. **awk的内置函数**:awk提供了丰富的内置函数,如`length(str)`计算字符串长度,`split(str,arr,sep)`按分隔符切割字符串,`int(x)`将x转换为整数,`substr(string,start[长度])`获取子字符串。 5. **正则表达式...

    关于awk的用法总结

    awk提供了一系列内置函数,如length()计算字符串长度,split()将字符串分割成数组,substr()提取子字符串,还有其他如printf()、sprintf()等。 6. **变量与数组** awk中的变量默认为全局,无需声明即可使用。数组...

    MySQL数据库开发教程-基础概念、SQL语法和Node.js操作详解

    - `TRIM([LEADING | TRAILING | BOTH] [CHARACTER | CHAR | C] FROM str)`:移除字符串开头或结尾的空格或指定字符。 3. **日期函数** - `NOW()`:返回当前日期和时间。 - `CURRENT_DATE()`:返回当前日期。 - ...

    命令行模拟程序

    这涉及到字符串分割,我们可以使用`std::stringstream`或`std::string::find`、`std::string::substr`等方法来实现。解析后的命令和参数可以分别存储在`std::string`数组或`std::vector<std::string>`中。 2. **...

Global site tag (gtag.js) - Google Analytics