Linux shell截取字符串
1.截取指定字符串之后的子串
M:需要进行截取的父串
mark:特定子串
match:最终得到的结果
M= start_foo_first_foo_second_foo_third_end
mark=foo_
四种不同的语法和相应的含义:
match=${M##mark}
在M中从左向右截取最后一个mark出现之后至结尾的子串
match=third_end
match=${M#*matk}
在M中从左向右截取第一个mark出现之后至结尾的子串
match=first_foo_second_foo_third_end
match=${M%%mark*}
在M中从右向左截取最后一个mark后的字符串
match=start_
match=${M%%mark*}
在M中从右向左截取第一个mark后的字符串
match=first_foo_second_
2.指定字符串索引位置的子串截取方法
${M:n1:n2}
M=012345678
使用方法:match= ${M:3:7}
结果为:match=34567
注意:索引从0开始
3.使用cut截取
cut -d "mark" -f "number"
使用方法:echo "the:editor:is:very:easy:to:use" | cut -d ":" -f 1
结果为:the
解释一下:cut -d 表示将标准输出中的字符串按照紧跟的参数进行分割,在这将字串"the:editor:is:very:easy:to:use"分割为每个单词
-f 表示提取上一步分割的单词序列的第几个索引,这里是1,也就是the这个单词
注意:-d 后的参数只能是单个字符。例如:。#¥&.
-f 的索引是从1开始的并非上一种方法中介绍的从0开始
-f 可以指定索引范围,例如上例中变为echo "the:editor:is:very:easy:to:use" | cut -d ":" -f 1-3 得到的结果将是theeditoris
欢迎指正和补充。