How to remove last n characters from a string in Bash?
我在bash脚本中有一个变量
1 2 | echo $var "some string.rtf" |
我想删除这个字符串的最后4个字符,并将结果赋给一个新变量
1 2 | echo $var2 "some string" |
我该怎么做?
您可以这样做:
1 2 3 4 5 6 7 | #!/bin/bash v="some string.rtf" v2=${v::-4} echo"$v --> $v2" |
要从字符串末尾删除四个字符,请使用
在最终的
使用变量扩展/子字符串替换:
${var/%Pattern/Replacement}
If suffix of var matches Pattern, then substitute Replacement for Pattern.
所以你可以这样做:
1 2 | ~$ echo ${var/%????/} some string |
或者,
如果你总是有同样的4个字母
1 2 | ~$ echo ${var/.rtf/} some string |
如果总是以
1 2 | ~$ echo ${var%.*} some string |
您还可以使用字符串的长度:
1 2 3 | ~$ len=${#var} ~$ echo ${var::len-4} some string |
或者简单地说是
对我有用的是:
1 2 | echo"hello world" | rev | cut -c5- | rev # hello w |
但我用它来修剪文件中的线条,所以看起来很尴尬。真正的用途是:
1 | cat somefile | rev | cut -c5- | rev |
你可以用SED,
1 | sed 's/.\{4\}$//' <<<"$var" |
例子:
1 2 3 4 | $ var="some string.rtf" $ var1=$(sed 's/.\{4\}$//' <<<"$var") $ echo $var1 some string |
我尝试了以下方法,但效果很好:
1 2 3 4 5 6 | #! /bin/bash var="hello.c" length=${#var} endindex=$(expr $length - 4) echo ${var:0:$endindex} |
输出:
这对我来说是通过计算字符串的大小来实现的。很容易,你需要回显你需要返回的值,然后像下面那样存储它
1 2 3 4 5 6 7 | removechars(){ var="some string.rtf" size=${#var} echo ${var:0:size-4} } removechars var2=$? |
some string