shell 截取字符串

shell 匹配截取字符串

一直在使用php语言,使用substr,perg_match等函数对字符串操作,近期要使用一个shell脚本对特定的文件进行排序,为了截取特定的字符,纠结了一阵,现将一些东西记录备忘

假定变量 file=172.23.xx.xx_1324443111.xml

第一种:#%截取

echo ${file#*_} #删除左边字符,保留右边字符
  #其中file是变量名,#号是运算符,*_表示从左边开始删除{第一个} _号及左边的所有字符
1324443111.xml

echo ${file##*_} # 删除左边字符,保留右边字符
  # ##*_ 表示从左边开始删除{最后(最右边)}一个_号及左边的所有字符
1324443111.xml

echo ${file%/*}  // 删除右边字符,保留左边字符
#  %_* 表示从右边开始,删除{第一个_号}及右边的字符
172.23.xx.xx

echo ${file%%/*}  # 删除右边字符,保留左边字符
# %%/_从右边开始,删除{最后(最左边)}一个_号及右边的字符

172.23.xx.xx

第二种,根据位置截取

echo ${file:0:6} #从左边第几个字符开始,及字符的个数
#其中的0表示左边第一个字符开始,6表示字符的总个数
172.23

echo ${file:6}   #从左边第几个字符开始,一直到结束
# 其中的6表示左边第7个字符开始,一直到结束
.xx.xx_1324443111.xml

## 文件后缀截取从左到右
echo ${file:0-14:10} #从右边第几个字符开始,及字符的个数
# 从右边第5个字符起的10个字符
132444311

echo ${file:0-4} # 从右边第几个字符开始,及字符的个数
# 从右边的第5个字符一直到结束
.xml

相关类似的功能还可以通过expr,比如expr substr实现,还可以使用sed、awk、cut等命令实现,由于本人现在工作还是以php为主,所以就不啰嗦了,相关知识可以查看linux命令大全

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值