当前位置:首页 > 服务器技术 > 正文

Linux Shell字符串截取技巧(小白也能轻松掌握的实用指南)

在 Linux Shell 脚本编程中,经常需要对字符串进行处理,比如提取文件名、去掉扩展名、获取路径中的某一部分等。掌握 Linux字符串截取 技巧,不仅能提升脚本效率,还能让你在自动化任务中游刃有余。本文将从基础到进阶,手把手教你如何使用 Bash 内置方法进行字符串截取,即使你是初学者,也能轻松上手!

Linux Shell字符串截取技巧(小白也能轻松掌握的实用指南) Linux字符串截取 Shell脚本技巧 Bash字符串操作 Linux命令行字符串处理 第1张

一、为什么需要字符串截取?

在日常运维或开发中,你可能会遇到以下场景:

  • 从完整路径 /home/user/document.pdf 中提取文件名 document.pdf
  • 去掉文件扩展名,只保留 document
  • 从 URL 中提取域名或参数
  • 批量重命名文件时处理字符串

这些都离不开 Shell脚本技巧 中的字符串截取功能。

二、Bash 内置字符串截取方法

Bash 提供了多种无需调用外部命令(如 cutawk)即可完成字符串截取的方式,效率更高,语法也更简洁。

1. 从左边开始截取(# 和 ##)

语法:${变量#模式}${变量##模式}

  • #:删除最短匹配(非贪婪)
  • ##:删除最长匹配(贪婪)
$ 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  

2. 从右边开始截取(% 和 %%)

语法:${变量%模式}${变量%%模式}

  • %:从右边删除最短匹配
  • %%:从右边删除最长匹配
$ 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  

3. 按位置截取(:N:M)

语法:${变量:起始位置:长度}

注意:起始位置从 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  

四、小贴士与注意事项

  • 所有操作都在 Bash 内部完成,无需调用外部程序,性能更优。
  • 模式支持通配符:*(任意字符)、?(单个字符)等。
  • 变量名必须用花括号 {} 包裹,否则语法无效。
  • 这些技巧适用于大多数现代 Linux 发行版(Ubuntu、CentOS、Debian 等)。

五、总结

通过本文,你已经掌握了 Linux命令行字符串处理 的核心技巧。无论是提取文件名、去除后缀,还是按位置切片,Bash 都提供了简洁高效的解决方案。建议多加练习,将这些方法融入你的日常脚本中,你会发现 Shell 编程变得更加得心应手!

关键词回顾:Linux字符串截取Shell脚本技巧Bash字符串操作Linux命令行字符串处理