shell脚本的字符串截取

假设有变量var=http://www.itecs.cn/index.html

1.#字号截取(从左边开始截,删除左边字符,保留右边字符)

# echo ${var#*//}

www.itecs.cn/index.html

${} -> ${var} -> ${var#//} -> ${var#*//} 

#//表示从左边开始截,截取到第一次出现//处,(#*//中的*表示)然后把左边的字符扔掉,得到//右边的字符。

2.##(双#号)截取

# echo ${var##*/}

index.html

##/表示从左边开始截,截取到最后一次出现/处,(##*/中的*表示)然后把左边的字符扔掉,得到/右边的字符。

3.%(百分号)截取(从右边开始截,删除右边字符,保留左边字符) 

# echo ${var%:*}

http

 %:表示从右边开始截,截取到第一次出现:(冒号)处,(%:*中的*表示)然后把右边的字符扔掉,得到冒号左边的字符。

4.%%(双%号)截取

 # echo ${var%%/*}

http:

 %%/表示从右边开始截,截取到最后一次出现/处,(%%/*中的*表示)然后把右边的字符扔掉,得到/左边的字符。

5.截取指定位置的字符

# ls -l /etc/dhcp/dhcpd.conf

-rw-r--r--. 1 root root 352 Sep 21 23:12 /etc/dhcp/dhcpd.conf

# str=`ls -l /etc/dhcp/dhcpd.conf`

# firstchar=${str:0:1}

# echo $firstchar

练习:

# ABC=user10

(1)得到变量值后面的数字

# echo ${ABC##*[a-z]}

# echo ${ABC##*[a-z,A-Z]}

# echo ${ABC##*[[:alpha:]]}

(2)得到变量值前面的字母(即去掉数字后的部分)

# echo ${ABC%%[0-9]*}

# echo ${ABC%%[[:digit:]]*}

猜你喜欢

转载自www.cnblogs.com/ybliu/p/11601065.html