[shell]shell字符串截取总结 shell字符串截取吸星大法 shell字符串截取详解

  1. 按指定的字符串截取
  2. 按照指定要求分割
  3. 按照指定位置分割
  4. 获得字符串的长度

1.按指定的字符串截取

${varible##*string} 从左向右截取最后一个string后的字符串 最大限度从前面截取word

${varible#*string}从左向右截取第一个string后的字符串 最小限度从前面截取word

${varible%%string*}从右向左截取最后一个string后的字符串 %% 最大限度从后面截取word

${varible%string*}从右向左截取第一个string后的字符串 % 最小限度从后面截取word

“*”只是一个通配符可以不要

2.按照指定要求分割

cut -d “.” -f1

3.按照指定位置分割

${varible:n1:n2}:截取变量varible从n1到n2之间的字符串

${varible:n1} 从左边第几个字符开始一直到结束

${var:0-start:len} 从右边第几个字符开始以及字符的个数

${var:0-start}从右边第几个字符开始一直到结束

cut 命令接受三个定位方法:

1、字节(bytes),用选项-b;

2、字符(characters),用选项-c;

3、域(fields),用选项-f。

cut -c 1,3    #-c 则会以字符为单位

cut -c 1-3

cut -c 3

1.expr substr “$a” 1 8
2.echo $a|awk ‘{print substr(,1,8)}’

cut 的 -d 选项的默认间隔符就是制表符 ,所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域就可以了。

[root@d4cd ~]# tr="K900005.D4C"
[root@d4cd~]# echo ${#tr}
11
[root@d4cd~]# echo ${tr:0-4:1}
.
[root@d4cd~]# echo ${tr:8}
D4C
[root@d4cd~]# echo ${tr:1:6}
900005

4.获得字符串的长度

${#var}

格式说明
${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 左边的所有字符。

更新中......

每天进步一点点,多思考,多总结 版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文地址:https://www.cnblogs.com/tingxin/p/12586432.html