Shell学习笔记:#*、%*字符串掐头去尾方法

一、语法
  在shell中可以通过#、%对字符串进行掐头去尾操作,使用方法如下:
  • # 表示掐头
  • % 表示去尾
  • 单个#或%表示最小匹配
  • 双个$或%表示最大匹配
 二、例子1
  假设我们定义一个变量为:
filename=/dir1/dir2/dir3/my.file.txt

  可以通过${ }分别替换得到不同的值:

  • ${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
  • ${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt
  • ${file#*.}:删掉第一个 . 及其左边的字符串:file.txt
  • ${file##*.}:删掉最后一个 . 及其左边的字符串:txt
  • ${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
  • ${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)
  • ${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
  • ${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
三、例子2
  用户名/密码@IP:str=user_name/"password"@192.168.100.100 8080
  • str2=${str##*/}
  • ip=${str2##*@}
  • username=${str%%/*}
  • password=${str2%%@*}
四、其他

1.截取子字符集

echo ${filename:0:5}:提取最左边的5个字符,/dir1
echo ${filename:5:5}:提取第5个字符开始的连续5个字符,/dir2

2.替换字符

echo ${filename/dir/path}:将第一个dir替换成path,/path1/dir2/dir3/my.file.txt

echo ${filename//dir/path}:将全部dir替换成path,/path1/path2/path3/my.file.txt

3.长度计算

echo ${#filename}:返回变量值的长度


END 2018-08-20 16:37:52
posted @   Hider1214  阅读(5946)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示