在 Linux Shell 脚本编程中,经常需要对字符串进行处理,比如提取文件名、去掉扩展名、获取路径中的某一部分等。掌握 Linux字符串截取 技巧,不仅能提升脚本效率,还能让你在自动化任务中游刃有余。本文将从基础到进阶,手把手教你如何使用 Bash 内置方法进行字符串截取,即使你是初学者,也能轻松上手!
在日常运维或开发中,你可能会遇到以下场景:
/home/user/document.pdf 中提取文件名 document.pdfdocument这些都离不开 Shell脚本技巧 中的字符串截取功能。
Bash 提供了多种无需调用外部命令(如 cut、awk)即可完成字符串截取的方式,效率更高,语法也更简洁。
语法:${变量#模式} 或 ${变量##模式}
#:删除最短匹配(非贪婪)##:删除最长匹配(贪婪)$ filename="/home/user/report_2024.pdf"$ echo ${filename#*/}report_2024.pdf$ echo ${filename##*/}report_2024.pdf
注意:上面两个结果一样,是因为路径中只有一个 / 分隔符。但如果路径是 /a/b/c/file.txt,则:
$ path="/a/b/c/file.txt"$ echo ${path#*/}b/c/file.txt$ echo ${path##*/}file.txt
语法:${变量%模式} 或 ${变量%%模式}
%:从右边删除最短匹配%%:从右边删除最长匹配$ filename="report_2024.pdf"$ echo ${filename%.*}report_2024$ echo ${filename%%.*}report_2024
如果文件名包含多个点,例如 archive.tar.gz:
$ name="archive.tar.gz"$ echo ${name%.*}archive.tar$ echo ${name%%.*}archive
语法:${变量:起始位置:长度}
注意:起始位置从 0 开始;若省略长度,则截取到末尾。
$ str="Hello World"$ echo ${str:0:5}Hello$ echo ${str:6}World
结合 Bash字符串操作,我们可以编写实用脚本:
#!/bin/bashfiles=("/data/logs/app.log" "/data/logs/error.log")for fullpath in ${files[@]}; do filename=${fullpath##*/} # 提取文件名 basename=${filename%.*} # 去掉扩展名 echo "Processing: $basename"done
*(任意字符)、?(单个字符)等。{} 包裹,否则语法无效。通过本文,你已经掌握了 Linux命令行字符串处理 的核心技巧。无论是提取文件名、去除后缀,还是按位置切片,Bash 都提供了简洁高效的解决方案。建议多加练习,将这些方法融入你的日常脚本中,你会发现 Shell 编程变得更加得心应手!
关键词回顾:Linux字符串截取、Shell脚本技巧、Bash字符串操作、Linux命令行字符串处理。
本文由主机测评网于2025-11-28发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025111025.html