shell通过表达式截取字符串

parameter=http://www.edreamer.com/cut-string.html

1. 以出现的字符为基准截取:

(1) ${string#*flag}从字符串左边开始寻找,第一次出现flag的位置,删除flag及其左边的字符串。

例如:${parameter#*//}结果为www.edreamer.com/cut-string.html

(2) ${string##*flag}从字符串左边开始寻找,最后一次出现flag的位置,删除flag及其左边的字符串。

例如:${parameter##*/}结果为cut-string.html

(3) ${string%flag*}从字符串右边开始寻找,第一次出现flag的位置,删除flag及其右边的字符串。

例如:${parameter%/*}结果为http://www.edreamer.com

(4) ${string%%flag*}从字符串右边开始寻找,最后一次出现flag的位置,删除flag及其右边的字符串。

例如:${parameter%%//*}结果为http:

2. 根据字符索引及长度截取:

(1) ${string:start:length}从左边start位置开始,截取后面length长度的字符串,不包括start位置的字符。

例如:${parameter:7:16}结果为www.edreamer.com

(2) ${string:start}从左边start位置开始,截取到结尾的字符串,不包括start位置的字符。

例如:${parameter:7}结果为www.edreamer.com/cut-string.html

(3) ${string:0-length}从右边开始,截取长度为length的字符串

例如:${parameter:0-4}结果为html

注:该方式在#!/bin/sh下会报错,要改为#!/bin/bash

1 Reply to “shell通过表达式截取字符串”

发表评论