如何在Bash中根据另一变量长度删除字符串变量的指定空格?
Bash 删除指定数量的开头空格
已知变量:
var=" |" # 开头有9个空格 var2="hello" # 长度为5
要删除var中数量等于var2长度的开头空格,最终得到" |",可以用以下两种方法:
方法一:纯Bash参数展开(推荐)
利用Bash的参数展开结合printf生成对应长度的空格,再删除开头的匹配内容:
# 一行实现 var_trimmed="${var#"$(printf "%${#var2}s" "")"}" # 分步拆解更清晰: n=${#var2} # 获取var2的长度,这里是5 spaces=$(printf "%${n}s" "")# 生成5个空格的字符串 var_trimmed="${var#$spaces}"# 删除var开头的5个空格
方法二:使用sed工具
通过sed的正则匹配,删除开头指定数量的空格:
n=${#var2} var_trimmed=$(sed "s/^ \{${n}\}//" <<< "$var")
验证结果:
echo "$var_trimmed" # 输出: |
内容的提问来源于stack exchange,提问作者Koko87
相关产品推荐
相关产品推荐

