如何在Bash中截取字符串从开头至倒数第N个字符?
Bash字符串截取解决方法
你的猜测没错,${str: -4}确实是从字符串倒数第4个字符开始截取,所以你之前的代码拿到的是最后4个字符(包含空格和三个感叹号)。要去掉末尾的三个感叹号、得到目标字符串,有这几种简单可行的方法:
参数扩展直接截取:利用
${字符串:起始位置:长度}的语法,当长度为负数时,表示从起始位置到倒数第N个字符结束。这里我们要去掉最后3个感叹号,直接用:str="Please help me do my homework !!!" printf "%s\n" "${str:0:-3}"输出结果就是
Please help me do my homework。批量删除末尾感叹号:如果不确定末尾感叹号的数量,想一次性去掉所有末尾的感叹号,可以用参数扩展的后缀删除功能:
printf "%s\n" "${str%%!*}"这个语法会从字符串末尾开始,删除最长的匹配
!*的部分,也就是把最后所有感叹号都清除掉。sed命令替换:通过sed命令将字符串末尾的感叹号替换为空:
printf "%s\n" "$str" | sed 's/!*$//'
内容的提问来源于stack exchange,提问作者Redshoe
相关产品推荐
相关产品推荐

