You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Bash脚本中如何按索引删除字符串变量的第n个字符?

按精确索引删除Bash字符串中的字符

Bash原生支持字符串切片操作,完全可以不用tr这类工具实现按索引删除字符,以下是两种实用方案:

方案1:Bash原生参数展开(推荐)

利用Bash的字符串切片语法${var:start:length},将原字符串拆分为目标索引前的部分和目标索引后的部分,拼接后得到删除指定字符后的结果。

注意:Bash中字符串索引默认是0-based(从0开始计数),如果你的需求是按1-based(从1开始计数)的位置删除,需要先转换为0-based索引。

示例(删除1-based第5个字符):

var="hello world"
# 1-based第5个字符对应0-based索引为4
target_idx=4
new_var="${var:0:target_idx}${var:target_idx+1}"
echo "$new_var"  # 输出:hell world

如果需要直接传入1-based位置:

var="hello world"
pos=5  # 1-based位置
target_idx=$((pos - 1))
new_var="${var:0:target_idx}${var:target_idx+1}"
echo "$new_var"

方案2:使用sed工具实现

若偏好使用文本处理工具,可通过sed的正则匹配定位并删除指定位置的字符:

示例(删除1-based第5个字符):

var="hello world"
pos=5
new_var=$(echo "$var" | sed "s/^\(.\{$(($pos-1))\)./\1/")
echo "$new_var"  # 输出:hell world

解释:正则^\(.\{4\}\).匹配字符串开头的4个字符,随后匹配第5个字符,替换时只保留前4个字符,等同于删除第5个字符。


内容的提问来源于stack exchange,提问作者王米尔

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:48:18