Shell字符串截取
实例:
#!/bin/bash
#--------------------------------------------
#name:practise31.sh
#author:wdh
#date:20181218
#--------------------------------------------
#shell字符串的截取
#网址截取
netUrl="https://www.hao123.com/test.html"
echo "$netUrl"
echo '---------------------------------------------------'
#1. #号截取,删除左边字符,保留右边字符。
echo ${netUrl#*//}
#其中netUrl是变量名,#号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符,即删除:https://
echo '---------------------------------------------------'
#2. ##号截取,删除左边字符,保留右边字符。
echo ${netUrl##*/}
# ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符,即删除:https://www.hao123.com/
echo '---------------------------------------------------'
#3. %号截取,删除右边字符,保留左边字符
echo ${netUrl%/*}
# %/* 表示从右边开始,删除第一个 / 号及右边的字符
echo '---------------------------------------------------'
#4. %% 号截取,删除右边字符,保留左边字符
echo ${netUrl%%/*}
# %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
echo '---------------------------------------------------'
#5. 从左边第几个字符开始,及字符的个数
echo ${netUrl:0:4}
# 0表示从左边第1个字符开始截取,截取的字符个数是4个
echo '---------------------------------------------------'
#6. 从左边第几个字符开始,一直到结束
echo ${netUrl:8}
# 5表示从左边第9个字符开始截取,一直到结束的所有字符
echo '---------------------------------------------------'
#7. 从右边第几个字符开始,及字符的个数
echo ${netUrl:0-9:4}
# 0-9表示从右边第9个字符开始截取,截取的字符个数是4个
echo '---------------------------------------------------'
#8. 从右边第几个字符开始,一直到结束
echo ${netUrl:0-9}
# 0-9表示从右边第9个字符开始截取,一直到结束的所有字符
echo '---------------------------------------------------'
#9. 从左边第几个字符开始,及字符的个数
echo `expr substr "$netUrl" 1 4`
# 'expr'支持模式匹配和字符串操作。字符串表达式的优先级高于数值表达式和逻辑关系表达式。
# 'substr STRING POSITION LENGTH'
# 返回STRING字符串中从POSITION开始,长度最大为LENGTH的子串。如果POSITION或LENGTH为负数,0或非数值,则返回空字符串
。
# 1表示从左边第一个字符开始截取,5表示截取的字符个数是4个
echo '---------------------------------------------------'
#10. 从左边第几个字符开始,及字符的个数
echo $netUrl|awk '{print substr($1,1,5)}'
# $1表示子字符串1,1表示从左边第一个字符开始截取,5表示截取的字符个数是5个
echo '---------------------------------------------------'
#11. 从左边第几个字符开始,及字符的个数
echo $netUrl | cut -c1-5
# 1表示从左边第一个字符开始截取,5表示截取的字符个数是5个
echo '---------------------------------------------------'
#12. 从左边第几个字符开始,及字符的个数
echo $netUrl|dd bs=1 count=5 2>/dev/null
echo ""
# 1表示从左边第一个字符开始截取,5表示截取的字符个数是5个
echo '---------------------------------------------------'
执行 ./practise31.sh
运行脚本,结果如下:
https://www.hao123.com/test.html
---------------------------------------------------
www.hao123.com/test.html
---------------------------------------------------
test.html
---------------------------------------------------
https://www.hao123.com
---------------------------------------------------
https:
---------------------------------------------------
http
---------------------------------------------------
www.hao123.com/test.html
---------------------------------------------------
test
---------------------------------------------------
test.html
---------------------------------------------------
http
---------------------------------------------------
https
---------------------------------------------------
https
---------------------------------------------------
https
---------------------------------------------------