[shell]shell字符串截取总结 shell字符串截取吸星大法 shell字符串截取详解
- 按指定的字符串截取
- 按照指定要求分割
- 按照指定位置分割
- 获得字符串的长度
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 选项的默认间隔符就是制表符\t,所以当你就是要使用制表符的时候,完全就可以省略-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 版权协议,转载请附上原文出处链接及本声明。