linux截取字符串主要用bash参数扩展:按位置(${str:5}、${str:2:4}等)、按分隔符削边(${str##*/}、${str%.*}等)、按字段(cut -d':' -f1)、按前后标记组合截取(${str#prefix}%suffix)。

Linux 中截取字符串变量的子串,主要靠 Bash 内置的参数扩展(${var...}),不需要调用外部命令,高效又可靠。关键看你想怎么切:按位置、按分隔符、还是按特定前后标记。
按位置截取(最直观)
适用于知道起始位置和长度的情况,索引从 0 开始:
-
${str:5}:从第 6 个字符开始,取到末尾 -
${str:2:4}:从第 3 个字符开始,取 4 个字符 -
${str:0-3}:从右边数,取最后 3 个字符(等价于${str:(-3)})
按分隔符“削边”(最常用)
用 #、##、%、%% 配合通配符,快速去掉前缀或后缀:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
-
${str#*/}:删掉从左第一个/及左边所有内容(最小匹配) -
${str##*/}:删掉从左最后一个/及左边所有内容(最大匹配),常用来取文件名 -
${str%.*}:删掉从右第一个.及右边所有内容,常用来去后缀 -
${str%%.*}:删掉从右最后一个.及右边所有内容(对含多个点的字符串更激进)
按固定分隔符取字段(结构化文本)
当字符串像 user:uid:gid:home 这样用单字符分隔时,cut 最顺手:
-
echo "$str" | cut -d':' -f1:取第一个字段(用户名) -
echo "$str" | cut -d':' -f3,4:取第 3 和第 4 个字段 -
echo "$str" | cut -d' ' -f2-:从第 2 个字段开始取到结尾(空格分隔)
按前后标记截取中间内容(灵活但需组合)
Bash 原生命令不直接支持“截取两个字符串之间”,但可组合实现。例如提取 start[xxx]end 中的 xxx:
- 先用
${str#start[}去掉前缀,再用${...%end}去掉后缀:mid=${str#start[}; mid=${mid%end} - 或用
awk一行搞定:echo "$str" | awk -F'start\[|end' '{print $2}'










