当前位置: 首页 > news >正文

Linux 字符串截取#与%

在Linux的Shell脚本中,#%用于字符串截取,通过通配符模式匹配删除部分内容

批量修改文件名技巧:Linux下#、##、%、%%符号操作详解-CSDN博客

从左截取(# 和 ##

  • #:删除最短匹配左侧内容。

  • ##:删除最长匹配左侧内容。

 path="/home/user/docs/file.txt"
echo ${path#*/}      # 输出 "home/user/docs/file.txt"(删除第一个/及左侧)
echo ${path##*/}     # 输出 "file.txt"(删除最后一个/及左侧)

从右截取(% 和 %%

  • %:删除最短匹配右侧内容。

  • %%:删除最长匹配右侧内容。

 file="data.tar.gz"
echo ${file%.*}      # 输出 "data.tar"(删除最后一个.及右侧)
echo ${file%%.*}     # 输出 "data"(删除第一个.及右侧)

 常见用例

提取文件名: 

path="/path/to/file.txt"
filename=${path##*/}  # 输出 "file.txt"

提取目录路径

 dir=${path%/*}        # 输出 "/path/to"

 去除文件扩展名

 name=${file%.*}       # 输出 "data.tar"(针对多级扩展)

获取文件后缀

suffix=${file##*.}    # 输出 "gz"

注意事项

  • 贪婪匹配:双符号(##%%)会尽可能多删除匹配内容。

  • 无匹配时:若模式未匹配,返回原字符串。

  • 通配符支持:使用*?[...]等通配符进行模式匹配。

示例解析

url="http://example.com/path"
domain=${url#*//}        # 删除"http://",得 "example.com/path"
domain=${domain%%/*}     # 删除最长右侧匹配,得 "example.com"

  • # 和 ## 从左删除,适用于提取右侧内容。

  • % 和 %% 从右删除,适用于提取左侧内容。

 

相关文章:

  • xtrabackup备份
  • SpringQuartz集群支持:JDBC存储与分布式执行
  • Blender 转 STL 文件全攻略:从基础到进阶
  • 大语言模型:在共识与创造之间的技术困局与破局探索
  • Python 实现的运筹优化系统数学建模详解(最大最小化模型)
  • 如何使用 qrcode.react生成二维码
  • VBA知识学习
  • Stable Diffusion 四重调参优化——项目学习记录
  • 人工智能应用工程师:开启智能时代的金钥匙
  • VM——相机拍照失败
  • 数据库架构全解析:MyCat、MHA、ProxySQL 的原理、功能与实例
  • 解决OBS里的鼠标太小|OBS鼠标尺寸问题
  • 什么是模型驱动开发MDD?有哪些应用场景?
  • 【科学技术部政务服务平台-用户注册/登录安全分析报告】
  • 【面试】什么是回流和重绘
  • YOLO半自动标注技术助力铁路检测,人工标注时间骤降80%!
  • 换电脑ip是换动态还是静态的?全面分析与操作指南‌
  • JavaScript对象的方法
  • Ansys Electronics 变压器 ACT
  • Android Telephony 464XLAT功能代码和日志分析
  • 设计网站特点/关键词推广软件
  • ...无锡网站制作/seo网站内容优化有哪些
  • 只做传统嫁衣网站/郑州聚商网络科技有限公司
  • 铭万做的网站怎么样/网站优化排名软件推广
  • 泉州(晋江)网站建设/有什么功能
  • 做的好的网站营销微信公众号/宣传软文