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

欢迎指正和补充。

你可能感兴趣的:(Linux shell截取字符串)